Определите, является ли файл дубликатом, и переименуйте его, если нет - PullRequest
0 голосов
/ 18 декабря 2010

У меня есть код, который перемещает файлы в тот же каталог. Что было бы хорошей стратегией для:

  • Определить, является ли файл дубликатом существующего файла в каталоге? Это чтобы решить, следует ли удалить источник или просто оставить его.
  • Переименовать исходный файл, если целевой файл с таким именем, но другим содержимым уже существует?

Ответы [ 3 ]

2 голосов
/ 18 декабря 2010

Обнаружить дубликаты файлов?

В большинстве языков программирования есть функция, называемая чем-то вроде FileExists, принимающая имя файла и возвращающая логическое значение, указывающее, существует ли файл с заданным именем.файловая система.

Обрабатывать файлы с одинаковыми именами, но разным содержимым?

Рассчитать контрольную сумму SHA1 для обоих файлов и сравнить эти хэши.Еще раз, большинство языков будут иметь функцию sha1, принимающую массив байтов, представляющих содержимое файлов, и возвращающий массив байтов, представляющих хэш SHA1.

1 голос
/ 18 декабря 2010

Если вам не нужны оригинальные имена файлов, просто рассчитайте хеш MD5 или SHA1 для «содержимого» файла и переименуйте файл в него.: -)

1 голос
/ 18 декабря 2010

Что ж, простой способ сделать это - сделать проверку циклическим избыточным кодом . Несколько языков имеют функции для этого реализованы. Вы также можете рассчитать сумму md5 для ваших файлов. Это не на 100% надежно.

Если вам нужно проверить, являются ли они ИДЕНТИЧНЫМИ, вам нужно открыть поток для обоих файлов и сравнить их побайтно.

Проверка на наличие дублирующихся имен файлов очевидна, сравните их.

Изменить: Если у вас много файлов, сравните размер файла. Если он не совпадает, они не могут быть равны.

...