Какой самый быстрый способ сканирования файлов на диске FAT32?

Я хочу сканировать диск FAT32 (мне просто нужен путь к файлу и имя файла) как можно скорее на С++, сканировать все файлы на диске FAT32. Есть ли какой-нибудь API для этого?


person sxingfeng    schedule 30.03.2010    source источник


Ответы (2)


Проверьте эту тему: Как я могу быстро перечислить каталоги в Win32?

На самом деле он описывает FindFirstFile/FindNextFile, но если вам это нужно быстрее, вам следует использовать ядро.
Однако решение для индексирования, описанное в ветке, не будет работать для систем FAT32 — отдайте должное MSalters

person Default    schedule 30.03.2010
comment
Обратите внимание, что решение для индекса, на которое намекают в вашем потоке, предполагает журналы изменений NTFS; FAT32 в этом разделе исключает этот вариант. - person MSalters; 30.03.2010
comment
спасибо MSalters. Я изменил свой ответ, чтобы включить это. Хотя, моя главная причина опубликовать это состояла в том, чтобы проверить другую ветку :) - person Default; 30.03.2010

Термин «сканирование» не очень хорошо определен. Вы хотите прочитать каждый байт каждого файла? Самый простой способ — использовать список каталогов. Начните с нажатия корневого каталога. Затем, пока список каталогов не пуст, вызовите FindFirstFile/FindNextFile для перечисления всех файлов и подкаталогов. Добавьте подкаталоги в список каталогов и прочитайте найденные файлы.

Обновление: для ваших целей будет достаточно FindFirstFileEx(FindExInfoBasic). Вы по-прежнему хотели бы обрабатывать только один каталог за раз (сначала в ширину) вместо того, чтобы входить в подкаталоги, как только вы их видите (сначала в глубину). Это быстрее, потому что записи каталога FAT32 в одном каталоге хранятся вместе, но подкаталоги обычно не хранятся рядом с родительскими каталогами.

person MSalters    schedule 30.03.2010