public static void GenerateStreamAssetsFileMd5Ver() { List <string> ret = FileUtils.GetAllFileFullPathsInStreamingAssets(Application.dataPath + "/StreamingAssets"); Debug.Log(ret.ListToString()); FileMd5DataDictionary dic = new FileMd5DataDictionary(); int i = 1; foreach (var file in ret) { if (!file.Contains(".meta") && !file.Contains("FilesMd5")) { FileMd5Data data = new FileMd5Data(); data.Id = i; int spliteIndex = file.IndexOf("StreamingAssets") + "StreamingAssets".Length + 1; string subFileName = file.Substring(spliteIndex).Replace("\\", "/"); data.FullPath = subFileName; spliteIndex = subFileName.LastIndexOf('.'); subFileName = subFileName.Substring(0, spliteIndex); spliteIndex = subFileName.LastIndexOf('/'); if (spliteIndex >= 0) { subFileName = subFileName.Substring(spliteIndex + 1); } data.FileName = subFileName; if (data.FullPath.Contains(".dat")) { data.FileName += ".dat"; } data.Md5Code = FileUtils.GetMd5_Path(file); dic.AddData(data); i++; } } dic.UpdateMd5File(Application.dataPath + "/StreamingAssets/FilesMd5.csv"); }
void GetModifiedFiles(string md5filecontent, string newVerMd5filecontent) { _latestContent = newVerMd5filecontent;//缓存最新版Md5文件 FileMd5DataDictionary newMd5DataDictionary = new FileMd5DataDictionary(); newMd5DataDictionary.Parse(newVerMd5filecontent); if (!string.IsNullOrEmpty(md5filecontent)) { FileMd5DataDictionary curMd5DataDictionary = new FileMd5DataDictionary(); curMd5DataDictionary.Parse(md5filecontent); List <FileMd5Data> tempNewVers = newMd5DataDictionary.GetAllValues(); foreach (var newVer in tempNewVers) { var oldVer = curMd5DataDictionary.Get(newVer.FileName); if (oldVer == null || oldVer.Md5Code != newVer.Md5Code) { _latestFiles.Add(newVer); ModifiedFiles++; } } List <FileMd5Data> temp = curMd5DataDictionary.GetAllValues(); foreach (var item in temp) { if (!newMd5DataDictionary.ContainsKey(item.FileName)) { _deletedFiles.Add(item); _deletedcount++; } } } else { ModifiedFiles = newMd5DataDictionary.Count; _latestFiles.AddRange(newMd5DataDictionary.GetAllValues()); } }