В заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д