В заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых - C#
Формулировка задачи:
Здравствуйте! Есть задача: нужно в заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых. Я начал делать так:
в Program:
столкнулся с проблемой что одни и те же файлы возвращает несколько раз.
Похоже что в один и тот же лист файлы добавляются несколько раз. Может кто свежим взглядом посмотрит и подскажет как можно сделать. Спасибо!
class SearchEquals { public List<string> _pathFiles = new List<string>(); public void GetFiles(string path) { foreach (var item2 in Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)) { _pathFiles.Add(item2); } _pathFiles.Sort(); } public Dictionary<long, List<FileInfo>> GetLength() { Dictionary<long, List<FileInfo>> groupLengPair = new Dictionary<long, List<FileInfo>>(); List<FileInfo> valueList= new List<FileInfo>(); for (int i = 0; i < _pathFiles.Count; i++) { FileInfo fi = new FileInfo(_pathFiles[i]); for (int j = 0; j < _pathFiles.Count; j++) { FileInfo fii=new FileInfo(_pathFiles[j]); if(!_pathFiles[i].Equals(_pathFiles[j])) { if (fi.Length.Equals(fii.Length)) { if (groupLengPair.TryGetValue(fii.Length, out valueList)) { valueList.Add(fii); groupLengPair[fii.Length]=valueList; } if (!groupLengPair.TryGetValue(fii.Length, out valueList)) { valueList = new List<FileInfo>(); valueList.Add(fii); groupLengPair.Add(fii.Length, valueList); } } } } } return groupLengPair; }
string path = @"D:\desctop"; SearchEquals search = new SearchEquals(); search.GetFiles(path); search.GetLength();
Решение задачи: «В заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых»
textual
Листинг программы
// Вместо if (fi.Length.Equals(fii.Length)) // Пишем if (fi.Length == fii.Length)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д