예제 #1
0
        /// <summary>
        /// Packages the file.
        /// </summary>
        /// <param name="pkgFileInfo">The PKG file info.</param>
        public void PackageFile(FileInfo pkgFileInfo)
        {
            //pkgFileInfo.FullName.Replace(BaseDir, "").Replace('/', '\\').TrimStart('\\');
            string md5Hash = "N/A";

            try
            {
                md5Hash = GlobalUtil.GetMD5Hash(pkgFileInfo.FullName);
            }
            catch (Exception) {  }
            //Console.WriteLine("MD5:" + md5Hash);

            string fileID = pkgFileInfo.FullName.Replace(BaseDir, "").Replace('\\', '/').TrimStart('/');

            SynFile currentFile = new SynFile
            {
                IsDirectory       = false,
                FileID            = fileID,
                FileSize          = pkgFileInfo.Length,
                HashCode          = md5Hash,
                CreateDateUTC     = pkgFileInfo.CreationTimeUtc,
                LastModifyDateUTC = pkgFileInfo.LastWriteTimeUtc
            };

            if (!CurrentSynFile.Structure.ContainsKey(fileID))
            {
                CurrentSynFile.Structure.Add(fileID, currentFile);
                CurrentSynFile.TotalFileCount++;
                CurrentSynFile.TotalFileSize += pkgFileInfo.Length;
            }

            if (CmpSynFile != null)
            {
                //旧的不存在而新的存在
                if (!CmpSynFile.Structure.ContainsKey(fileID))
                {
                    CurrentSynFile.AddFiles.Add(fileID, currentFile);
                }
                else
                {
                    SynFile oldFile = CmpSynFile.Structure[fileID];
                    if (!CurrentSynFile.Structure.ContainsKey(fileID))
                    {
                        //CurrentSynFile.TotalFileSize -= oldFile.FileSize;
                        CurrentSynFile.RemoveFiles.Add(fileID, currentFile);
                    }
                    else
                    {
                        if (string.Compare(oldFile.HashCode, currentFile.HashCode, true) != 0)
                        {
                            //CurrentSynFile.TotalFileSize -= oldFile.FileSize;
                            //CurrentSynFile.TotalFileSize += pkgFileInfo.Length;
                            CurrentSynFile.UpdateFiles.Add(fileID, currentFile);
                        }
                    }
                }
            }
        }