123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using System;
- using System.IO;
- using UnityEngine;
- using UnityEngine.Networking;
- namespace YooAsset
- {
-
-
-
- public class DownloadHandlerFileRange : DownloadHandlerScript
- {
- private string _fileSavePath;
- private long _fileTotalSize;
- private UnityWebRequest _webRequest;
- private FileStream _fileStream;
- private long _localFileSize = 0;
- private long _curFileSize = 0;
- public DownloadHandlerFileRange(string fileSavePath, long fileTotalSize, UnityWebRequest webRequest) : base(new byte[1024 * 1024])
- {
- _fileSavePath = fileSavePath;
- _fileTotalSize = fileTotalSize;
- _webRequest = webRequest;
- if (File.Exists(fileSavePath))
- {
- FileInfo fileInfo = new FileInfo(fileSavePath);
- _localFileSize = fileInfo.Length;
- }
- _fileStream = new FileStream(_fileSavePath, FileMode.Append, FileAccess.Write);
- _curFileSize = _localFileSize;
- }
- protected override bool ReceiveData(byte[] data, int dataLength)
- {
- if (data == null || dataLength == 0 || _webRequest.responseCode >= 400)
- return false;
- if (_fileStream == null)
- return false;
- _fileStream.Write(data, 0, dataLength);
- _curFileSize += dataLength;
- return true;
- }
-
-
-
- protected override byte[] GetData()
- {
- return null;
- }
-
-
-
- protected override string GetText()
- {
- return null;
- }
-
-
-
- protected override float GetProgress()
- {
- return _fileTotalSize == 0 ? 0 : ((float)_curFileSize) / _fileTotalSize;
- }
-
-
-
- public void Cleanup()
- {
- if (_fileStream != null)
- {
- _fileStream.Flush();
- _fileStream.Dispose();
- _fileStream = null;
- }
- }
- }
- }
|