/// <summary> /// 对比两个列表得到差异列表 /// </summary> /// <param name="localList">本地列表</param> /// <param name="serverList">云列表</param> /// <returns>对比结果</returns> public static FileCheckResult GetChangList(List <string> localList, List <string> serverList) { Dictionary <string, FileCheckInfo> dicLocal = new Dictionary <string, FileCheckInfo>(); Dictionary <string, FileCheckInfo> dicServer = new Dictionary <string, FileCheckInfo>(); FileCheckInfo checkInfo; foreach (var item in localList) { if (!string.IsNullOrEmpty(item)) { checkInfo = new FileCheckInfo(item); dicLocal[checkInfo.name] = checkInfo; Debug.Log("dicLocal:" + checkInfo.name + "_" + checkInfo.md5); } } foreach (var item in serverList) { if (!string.IsNullOrEmpty(item)) { checkInfo = new FileCheckInfo(item); dicServer[checkInfo.name] = checkInfo; Debug.Log("dicServer:" + checkInfo.name + "_" + checkInfo.md5); } } FileCheckResult result = new FileCheckResult(); foreach (var item in dicServer) { if (dicLocal.TryGetValue(item.Key, out checkInfo)) { if (!checkInfo.Equals(item.Value)) { Debug.Log("localFile:" + checkInfo.md5); Debug.Log("serverFile:" + item.Value.md5); result.ChangFile(item.Value); Debug.Log("ChangFile" + item.Key); } dicLocal.Remove(item.Key); } else { Debug.Log("AddFile:" + item.Key); result.AddFile(item.Value); } } foreach (var item in dicLocal) { result.DeleteFile(item.Value); } result.Sort(); return(result); }
int Compare(FileCheckInfo left, FileCheckInfo right) { return(left.name.CompareTo(right.name)); }
public void DeleteFile(FileCheckInfo file) { deleteList.Add(file); }
public void AddFile(FileCheckInfo file) { downSize += file.size; addList.Add(file); downList.Add(file); }
public void ChangFile(FileCheckInfo file) { downSize += file.size; changeList.Add(file); downList.Add(file); }
public bool Equals(FileCheckInfo file) { return(file.md5.Equals(md5)); }