static void Main(string[] args) { XmlConfigurator.Configure(); if (args.Count() != 1) { LogMessage("Please set path to search duplicates (sample C:\temp)"); Console.ReadKey(); Environment.Exit(0); } var folder = args.First(); if (!Directory.Exists(folder)) { LogMessage("folder [{0}] does not exists", folder); Console.ReadKey(); Environment.Exit(0); } Stopwatch watch = new Stopwatch(); LogMessage("Starting search files in directory [{0}] ...", folder); watch.Start(); var fileList = WinApiSearch.RecursiveScan(folder); watch.Stop(); LogMessage("{0} files found in directory [{1}], time spent: [{2}]", fileList.Count(), folder, watch.Elapsed); var duplicateFilesFinder = new DuplicateFilesFinder(new FileHasherMd5(), fileList, Logger); duplicateFilesFinder.FileProcessed += OnFileProcessed; watch.Restart(); var duplicates = duplicateFilesFinder.GetDuplicates(); watch.Stop(); LogMessage(""); LogMessage("{0} duplicate groups found", duplicates.Count()); LogMessage("{0} possible duplicates on this groups, time spent: [{1}]", duplicates.Sum(x => x.Count()), watch.Elapsed); //using (StreamWriter sw = File.AppendText(@"C:\Pub\duplicates.txt")) //{ // foreach (var files in duplicates) // { // sw.WriteLine("======================="); // foreach (var file in files) // { // sw.WriteLine(file.Path); // } // } //} Console.ReadKey(); }
static void Main(string[] args) { if (args.Count() != 1) { Console.WriteLine(@"Please set path to search duplicates (sample C:\temp)"); Console.ReadKey(); Environment.Exit(0); } var folder = args.First(); if (!Directory.Exists(folder)) { Console.WriteLine($"folder [{folder}] does not exists"); Console.ReadKey(); Environment.Exit(0); } var watch = new Stopwatch(); watch.Start(); var searchService = new WinApiSearch(); try { var files = searchService.RecursiveScan(folder); foreach (var file in files) { Console.WriteLine(file.Path); } } catch (Exception e) { Console.WriteLine(e); throw; } watch.Stop(); Console.WriteLine($"Search was done for {watch.Elapsed}"); Console.ReadKey(); }