2014-08-28 2 views
0

среды разработки: мобильное приложение в AndroidУникальный Идентификатор файла в FAT32

Я ищу способ однозначно идентифицировать файлы в FAT32/VFAT файловой системы (который не имеют дескрипторов). Я думал о хэшировании (SHA1?) Полный путь. Проблема с этим решением заключается в том, что он не поддерживает перемещение/переименование.

Есть ли что-то лучшее, что будет сохраняться даже при перемещении/переименовании файла?

Благодаря

+0

Хеширование имени файла не будет уникальным - у вас может быть несколько «README.TXT» ... Аналогично, хэширование содержимого файла может привести к конфликтам, если два файла имеют одинаковый контент (но я не уверен, как «уникальным» вам нужно быть - возможно, это было бы приемлемо), но это было бы хорошо для перемещения/переименования файла. Вы можете использовать начальный номер блока файла, но это изменит идентификатор, если файл будет перемещен/скопирован. Это было бы самым близким к тому, что вы могли бы получить номер i-узла (который также изменился бы при перемещении/переименовании). – twalberg

+0

@twalberg Я имел в виду хеширование имени файла полного пути, а не только самого имени файла. Что вы подразумеваете под «начальным номером блока»? Убедилось ли, что в одном блоке не может быть 2 файла? Как получить эту информацию в C/C++ или POSIX? – HyBRiD

ответ

0

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

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

+0

Да, это приложение в режиме пользователя, но мне нужно, чтобы идентификаторы сохранялись между сеансами. Отображение сопоставления файлов с идентификаторами в памяти не решает проблему сохранения. – HyBRiD

+0

@HyBRiD настойчивость - еще одна тема. Если файл перемещается с использованием операции копирования/удаления, будет ли он одним и тем же файлом? Если файл ZIP, а затем распакован в другой папке, это тот же файл? –

+0

copy/delete и zip/unzip создает новый файл на диске, но move/rename - это тот же файл, поэтому он должен хранить предыдущий идентификатор файла. – HyBRiD

Смежные вопросы