2016-11-29 2 views
0

Если бы я дал вам файл. Вы можете прочитать файл, но вы не можете его изменить или скопировать. Затем я беру файл, переименовываю его и перемещаю в новое место. Как вы можете определить этот файл? (Достаточно надежно)Как вы можете определить файл без имени файла или пути к файлу?

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

+2

Одна из идей - запомнить хэш файла и длину файла. – e0k

+3

'Вы можете прочитать файл, но вы не можете его изменить или скопировать. <--- Если я могу его прочитать, я могу его скопировать. – wim

+0

И вы можете изменить его при копировании. –

ответ

1

Я сделал именно это, это не сложно.

Я беру 256-битный хеш (я забыл, какую рутину я использовал с моей головы) файла и размер файла и записываю его в таблицу. Если они соответствуют совпадению файлов. (И я думаю, что отслеживание размера больше паранойи, чем необходимость.) Чтобы ускорить работу, я также сбрасываю этот хэш на 32-битное значение. Если 32-битные значения совпадают, я проверяю все данные.

Ради производительности я сохраняю последние 10 миллионов файлов, которые я изучил. 32-битные значения идут в одном файле, который читается целиком, когда нужно проверить основную запись. Я вытягиваю «страницу» (я забываю, насколько она), которая дополняется, чтобы выровнять ее с диском.