Example #1
0
        /// <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
        }
Example #3
0
 /// <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
         }
     }
 }