В заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть задача: нужно в заданном каталоге сравнить все файлы по содержимому и вывести список одинаковых. Я начал делать так:
 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;
        }
в Program:
            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)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы