Проверьте, является ли это тот же файл даже после перемещения, переименования и т. Д. - PullRequest
1 голос
/ 22 февраля 2011

Эта проблема может быть обычной, но поскольку я не знаю терминов, связанных с ней, я не смог найти ее (если Google не принимал целые абзацы в качестве поисковых запросов).

У меня есть файл. Это может быть текстовый файл, файл MP3, видеоклип или даже огромный файл MKV.

У меня есть доступ к этому файлу, и теперь я должен каким-то образом обработать его, чтобы получить какое-то значение или уникальный идентификатор ... хэш или что-то в этом роде. Я храню это где-то. Этот «хеш» должен быть маленьким - несколько байт. Не должно быть половины размера файла!

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

Этот алгоритм должен возвращать true, если второй файл содержит точно такие же данные - каждый бит - как первый файл (в основном, тот же файл), даже если имя файла, атрибуты, местоположение и т. Д. Все изменились.

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

Это должно быть независимо от ОС или файловой системы.

Есть ли способ сделать это?

Ответы [ 3 ]

1 голос
/ 22 февраля 2011

Ваша дилемма проста.Получайте MD5 (или любой другой алгоритм, который может создавать односторонний хэш) каждый раз, когда вы обрабатываете файл.

Here it is in simple steps:
Step 1: Load file stream into a byte array
Step 2: Obtain MD5 hash from byte array
Step 3: Check your db if it already contains hash.
Step 4:    return false if not exist
Step 5:    return true if found
Step 6: If not exist process file
Step 7: Save hash
1 голос
/ 22 февраля 2011

То, что вы ищете, это криптографические алгоритмы хеширования . Читайте о них:

Все надежные языки и библиотеки предлагают поддержку для вычисления хешей.

0 голосов
/ 10 апреля 2014

Сравнение двух файлов по ключу ( file-1(1,20,a), file-2(2,20,a)) Используя карточку сортировки, сопоставленные записи должны быть перемещены в файл-3 (новый файл) из файла файл-2 ?

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