Example #1
0
        /// <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);
        }
Example #2
0
 int Compare(FileCheckInfo left, FileCheckInfo right)
 {
     return(left.name.CompareTo(right.name));
 }
Example #3
0
 public void DeleteFile(FileCheckInfo file)
 {
     deleteList.Add(file);
 }
Example #4
0
 public void AddFile(FileCheckInfo file)
 {
     downSize += file.size;
     addList.Add(file);
     downList.Add(file);
 }
Example #5
0
 public void ChangFile(FileCheckInfo file)
 {
     downSize += file.size;
     changeList.Add(file);
     downList.Add(file);
 }
Example #6
0
 public bool Equals(FileCheckInfo file)
 {
     return(file.md5.Equals(md5));
 }