Пример #1
0
        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);
        }
Пример #2
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;
            }
        }