public static void CreateFileList(string exportPath, string version) { ///----------------------创建文件列表----------------------- string filePath = exportPath + "/files.txt"; if (File.Exists(filePath)) { File.Delete(filePath); } string versionFilePath = Application.dataPath + "/../BuildABs" + "/version.txt"; if (File.Exists(versionFilePath)) { File.Delete(versionFilePath); } StringBuilder sb = new StringBuilder(); DirectoryInfo dir = new DirectoryInfo(exportPath); FileInfo[] files = dir.GetFiles("*", SearchOption.AllDirectories); for (int i = 0; i < files.Length; i++) { FileInfo file = files[i]; if (file.Extension.Equals(".meta") || file.Extension.Equals(".DS_Store")) { continue; } string crc = FileToCRC32.GetFileCRC32(file.FullName); string value = file.FullName.Replace(dir.FullName + "\\", string.Empty); sb.AppendLine(value + "|" + crc + "|" + file.Length); } File.WriteAllText(filePath, sb.ToString()); File.WriteAllText(versionFilePath, version); }
/// <summary> /// 下载结束 /// </summary> /// <param name="tmpSuccess">是否下载成功</param> void FinishDownload(bool tmpSuccess) { lock (this) { if (downLoadState != DownloadState.Loading) { return; } if (webResponse != null) { webResponse.Close(); } if (responseStream != null) { responseStream.Close(); } if (destStream != null) { destStream.Close(); } var isVerifySuccess = true; if (tmpSuccess) { if (downLoadType == DownLoadType.CacheResumeFile) { if (string.Empty != fileCRC) { var localCrc = FileToCRC32.GetFileCRC32(fileLocalCache); if (localCrc == fileCRC) { FileUtils.MoveFile(fileLocalCache, savePath); //Debug.Log(string.Format("Finish download success file {0}", fileName)); } else { isVerifySuccess = false; FileUtils.DelFile(fileLocalCache); errorMsg = "crc verify failed"; Debug.LogWarning(string.Format("Finish download crc check failed {0}", fileName)); } } else { FileUtils.MoveFile(fileLocalCache, savePath); Debug.Log(string.Format("Finish download success file {0}", fileName)); } } } else { Debug.LogError(string.Format("Finish download failed to download file:: {0},errorReason::{1}", fileName, errorMsg)); Debug.LogError("=====load fail=======" + (url + fileName)); } this.isSuccess = tmpSuccess && isVerifySuccess; downLoadState = DownloadState.Finished; } }
static void AddConfInfo(FileList filelist) { if (filelist == null) { return; } string confFolder = string.Format("{0}/{1}", PackAssetBundle.bundleBuildFolder, ResourceConst.ConfFolder); string[] files = Directory.GetFiles(confFolder); foreach (string file in files) { string fileName = Path.GetFileName(file); string bundleName = string.Format("{0}/{1}", ResourceConst.ConfFolder, fileName); uint crc = FileToCRC32.GetFileCRC32Int(file); FileInfo fileInfo = new FileInfo(file); UInt32 size = (UInt32)fileInfo.Length; string md5 = MD5Utils.GetMD5(file); filelist.AddBundleInfo(bundleName, crc, size, md5); } }
private void CollectDownFile(string netFiles, string streamFiles) { mUpdateList.Clear(); string[] perFiles = null; if (Directory.Exists(Paths.PersistentDataPath)) { perFiles = Directory.GetFiles(Paths.PersistentDataPath, "*", SearchOption.AllDirectories); } string[] netFilesArr = netFiles.Split(new string[] { "\r\n" }, StringSplitOptions.None); for (int i = 0; i < netFilesArr.Length; i++) { if (string.IsNullOrEmpty(netFilesArr[i])) { continue; } string[] fileArr = netFilesArr[i].Split('|'); UpdateInfo info = new UpdateInfo(); string netFile = fileArr[0].Replace("\\", "/"); string netCrc = fileArr[1]; string netSize = fileArr[2]; info.name = netFile; info.crc = netCrc; info.size = int.Parse(netSize); bool isNewFile = true; if (perFiles != null && perFiles.Length > 0) { for (int j = 0; j < perFiles.Length; j++) { string fileName = perFiles[j].Replace(Paths.PersistentDataPath, "").Replace("\\", "/"); if (netFile.Equals(fileName)) { isNewFile = false; if (!FileToCRC32.GetFileCRC32(perFiles[j]).Equals(netCrc)) { mUpdateList.Add(info.name, info); } } } } else if (!string.IsNullOrEmpty(streamFiles)) { string[] streamFilesArr = streamFiles.Split(new string[] { "\r\n" }, StringSplitOptions.None); for (int j = 0; j < streamFilesArr.Length; j++) { if (string.IsNullOrEmpty(streamFilesArr[j])) { continue; } string[] sfileArr = streamFilesArr[i].Split('|'); if (sfileArr[0].Replace("\\", "/").Equals(netFile)) { isNewFile = false; if (!sfileArr[1].Equals(netCrc)) { mUpdateList.Add(info.name, info); } } } } if (isNewFile) { mUpdateList.Add(info.name, info); } } }