irfad Ответов: 2

Поиск дубликатов файлов


Дорогие Ребята.......

я хочу найти и обработать все дубликаты файлов в моей системе.

я предполагал использовать байтовое сравнение файлов. но здесь проблема в том,что я хочу искать каждый файл с другими файлами в каталоге, папке и подпапках. как найти и перечислить все файлы в папке и ее иерархии вложенных папок.

пожалуйста, дайте мне идею, как найти дубликаты файлов в моем дереве каталогов.
если возможно, дайте мне идею и код, если у вас, ребята, есть...

По отношению

Irfad С

2 Ответов

Рейтинг:
19

Manfred Rudolf Bihy

Вот идея того, что вы должны сделать:


  1. Использовать класс Directoryinfoкласс[^] для обхода структуры файловой системы.
  2. Добавьте все найденные файлы с их полным путем в список, убедившись, что один и тот же файл не добавляется более одного раза.
  3. Рассчитать MD5 хэш[^] для содержимого каждого файла в вашем списке и сохраните это значение вместе с путем к файлам. (возможно Ша-2[^])
  4. Разделите все файлы на наборы так, чтобы любые два файла были в одном наборе тогда и только тогда, когда их хэши MD5 или SHA-2 идентичны.
  5. Для каждого набора выполните двоичное сравнение всех файлов в этом наборе друг с другом.


С уважением,

- МРБ


Mehdi Gholam

5 ЕД

thatraja

5!

LanFanNinja

+5 я согласен!

Michel [mjbohn]

и мои 5

_Tushar Patil

+5

Espen Harlinn

5 ЕД!

Manfred Rudolf Bihy

Спасибо, Эспен!

Рейтинг:
1

LanFanNinja

Это позволит получить пути ко всем файлам в каталоге, включая те, что находятся в подкаталогах.

string[] files = System.IO.Directory.GetFiles(
    "PathToDirectory", "*.*", System.IO.SearchOption.AllDirectories);