/// <summary> /// file comparison method /// </summary> /// <see cref="MD5Hash"/> /// <see cref=" export.Remove"/> /// <see cref="MoveFile"/> /// <see cref=" export.AddMoveFile"/> /// <param name="export">parameter for working with the class ExportSinhronizaer</param> /// <param name="fileImpor">file for comparison in import</param> /// <param name="fileIm">the path to the file</param> /// <param name="Way">file transfer path</param> /// <returns>the file was moved or not</returns> private static bool TestFileExport(ExportSinhronizaer export, FileStream fileImpor, string fileIm, string Way) { bool flag = true; foreach (var fileEx in export.Files) { if (!File.Exists(fileEx)) { continue; } FileStream fileExport = new FileStream(fileEx, FileMode.Open, FileAccess.Read); //open export file if (fileImpor.Length == fileExport.Length) { flag = MD5Hash(fileImpor, fileExport); //method for comparison fileExport.Close(); //close export file if (!flag) { export.Remove(fileEx); //method for remove export file MoveFile(fileEx, Way); export.AddMoveFile(Way, fileEx); break; } } else { fileExport.Close(); //close export file } } return(flag); }
/// <summary> /// folder comparison method /// </summary> /// <see cref=" DelDir.Add()"/> /// <see cref="DeleteDir"()/> /// <param name="import">parameter for working with the class ImportSinchronizaer</param> /// <param name="export">parameter for working with the class ExportSinhronizaer</param> public static void TestDirectory(ImportSinchronizaer import, ExportSinhronizaer export) { List <string> DelDir = new List <string>(); //list for delete folders bool Add = false; foreach (var dirEx in export.Dir) //open export list dirs { Add = false; string WayEx = dirEx.Remove((int)Nums.Zero, export.Root.Length); foreach (var dirIm in import.Dir) //open import list dirs { string WayIm = dirIm.Remove((int)Nums.Zero, import.Root.Length); if (WayEx == WayIm) //if way export==way import { Add = true; break; } } if (!Add) { DelDir.Add(dirEx); //add in list delete folders } } DeleteDir(DelDir); //call delete dir }
/// <summary> /// file comparison method /// </summary> /// <see cref="TestFileExport()"/> /// <see cref="CopyFile"/> /// <see cref="export.AddNewFile()"/> /// <param name="import">parameter for working with the class ImportSinchronizaer</param> /// <param name="export">parameter for working with the class ExportSinhronizaer</param> static public void TestFile(ImportSinchronizaer import, ExportSinhronizaer export) { foreach (var fileIm in import.File) //open file int import for comparison { FileStream fileImpor = new FileStream(fileIm, FileMode.Open, FileAccess.Read); //open file string Way = String.Format("{0}\\{1}", export.Root, fileIm.Remove((int)Nums.Zero, import.Root.Length)); //create way for comparison bool flag = true; //flag for copy file or not if (export.Files.Count > (int)Nums.Zero) { flag = TestFileExport(export, fileImpor, fileIm, Way); //call method export object } if (flag) { CopyFile(fileImpor, Way); //call method for copy export.AddNewFile(Way); //call method for add new dir } } }