public bool GetUserAcceptanceOfFolderNamesCorrectness(bool printErrorMessage)
        {
            ConsoleExtensions.WriteInColor("Checked folder: ", ConsoleColor.Yellow);
            ConsoleExtensions.WriteInColor("(it checks whether this folder contains the same files which are in the base folder)\n", ConsoleColor.DarkGray);
            ConsoleExtensions.WriteInColor($"{GetCheckedFolderFullName()}\n\n", ConsoleColor.Gray);

            ConsoleExtensions.WriteInColor("Base folder: ", ConsoleColor.Yellow);
            ConsoleExtensions.WriteInColor("(The files in this folder won't be changed. They are used only for comparison purpose)\n", ConsoleColor.DarkGray);
            ConsoleExtensions.WriteInColor($"{GetBaseFolderFullName()}\n\n", ConsoleColor.Gray);

            while (true)
            {
                ConsoleExtensions.WriteInColor("Are these folders correct? (yes/no): ", ConsoleColor.Yellow);
                string acceptanceValue = Console.ReadLine().Trim().ToLower();

                //Console.WriteLine();

                if (acceptanceValue == "yes" || acceptanceValue == "no")
                {
                    if (acceptanceValue == "no" && printErrorMessage)
                    {
                        ConsoleExtensions.WriteInColor("\nThe folders pathes didn't approved.\n", ConsoleColor.Red);
                        ConsoleExtensions.WriteInColor("Application execution will be terminated.\n", ConsoleColor.Red);

                        return(false);
                    }

                    return(true);
                }
                else
                {
                    ConsoleExtensions.WriteInColor("Answer must be only 'yes' or 'no'.\n\n", ConsoleColor.Red);
                }
            }
        }
 public void PrintMD5Hash(ConsoleColor foregroundColor)
 {
     foreach (var value in MD5Hash)
     {
         ConsoleExtensions.WriteInColor($"{value} ", foregroundColor);
     }
 }
        public bool CheckInitFileExistance(bool printErrorMessage)
        {
            if (!_isInitFileExist)
            {
                if (printErrorMessage)
                {
                    ConsoleExtensions.WriteInColor($"The initialization file doesn't exist.\n[{_initFileFullName}]\n", ConsoleColor.Red);
                    ConsoleExtensions.WriteInColor("\nApplication will be terminated.\n", ConsoleColor.Red);
                }

                return(false);
            }

            return(true);
        }
        public bool CheckFoldersExistance(bool printErrorMessage)
        {
            if (!_isCheckedFolderExist && printErrorMessage)
            {
                ConsoleExtensions.WriteInColor($"The checked folder doesn't exist.\n[{GetCheckedFolderFullName()}].\n\n", ConsoleColor.Red);
            }

            if (!_isBaseFolderExist && printErrorMessage)
            {
                ConsoleExtensions.WriteInColor($"The base folder doesn't exist.\n[{GetBaseFolderFullName()}].\n\n", ConsoleColor.Red);
            }

            if (!_isCheckedFolderExist || !_isBaseFolderExist)
            {
                ConsoleExtensions.WriteInColor("Application execution will be terminated.\n", ConsoleColor.Red);

                return(false);
            }

            return(true);
        }
Exemple #5
0
        public static void Main(string[] args)
        {
            var initFilePath = @"C:\Users\oholenko\source\repos\SearchDuplicateFiles\TestData\FolderPathesInit.txt";
//			var initFilePath = @"C:\Users\cat-b\source\repos\SearchDuplicateFiles\TestData\FolderPathesInit.txt";

            var syncFiles = new SyncFiles(initFilePath);

            if (!syncFiles.CheckInitFileExistance(true) ||
                !syncFiles.CheckFoldersExistance(true))
            {
                return;
            }

            if (!syncFiles.GetUserAcceptanceOfFolderNamesCorrectness(true))
            {
                return;
            }

            ConsoleExtensions.WriteInColor($"\nChecked folder contain {syncFiles.GetCheckedFolderFiles().Count} file(s).\n",
                                           ConsoleColor.Blue);
            ConsoleExtensions.WriteInColor($"Base folder contain {syncFiles.GetBaseFolderFiles().Count} file(s).\n",
                                           ConsoleColor.Blue);
            ConsoleExtensions.WriteInColor($"It were found {syncFiles.GetDuplicateFiles().Count} duplicate file(s).\n",
                                           ConsoleColor.Blue);

            ConsoleExtensions.WriteInColor("\nDo move duplicate files to Duplicate folder? (yes/no): ", ConsoleColor.Yellow);
            string moveFileAnswer = Console.ReadLine().Trim().ToLower();

            if (moveFileAnswer != "yes")
            {
                return;
            }

            //			syncFiles.GetCheckedFolderFiles().ForEach(file => Console.WriteLine(file.FullName));
            //			Console.WriteLine("--------");
            //
            //			syncFiles.GetBaseFolderFiles().ForEach(file => Console.WriteLine(file.FullName));
            //			Console.WriteLine("--------");
            //
            //			syncFiles.GetDuplicateFiles().ForEach(file => Console.WriteLine(file.FullName));
            //			Console.WriteLine();

            // Move file to Duplicates folders

            string duplicatesPath = Directory.CreateDirectory(Path.Combine(Directory.GetParent(syncFiles.GetCheckedFolderFullName()).FullName, "Duplicates")).FullName;

            syncFiles.GetDuplicateFiles().ForEach(file =>
            {
                try
                {
                    File.Copy(file.FullName, Path.Combine(duplicatesPath, file.Name));
                }
                catch (Exception ex)
                {
                    ConsoleExtensions.WriteInColor($"{ex.Message}\n", ConsoleColor.Red);
                }
                finally
                {
                    File.Delete(file.FullName);
                }
            });

            switch (syncFiles.GetDuplicateFiles().Count)
            {
            case 0:
                ConsoleExtensions.WriteInColor("\nNo duplicate files.\n", ConsoleColor.Red);
                break;

            case 1:
                ConsoleExtensions.WriteInColor($"\n{syncFiles.GetDuplicateFiles().Count()} file was moved.\n", ConsoleColor.Blue);
                break;

            default:
                ConsoleExtensions.WriteInColor($"\n{syncFiles.GetDuplicateFiles().Count()} files were moved.\n", ConsoleColor.Blue);
                break;
            }
        }