Я хочу сканировать диск FAT32 (мне просто нужен путь к файлу и имя файла) как можно скорее на С++, сканировать все файлы на диске FAT32. Есть ли какой-нибудь API для этого?
Какой самый быстрый способ сканирования файлов на диске FAT32?
Ответы (2)
Проверьте эту тему: Как я могу быстро перечислить каталоги в Win32?
На самом деле он описывает FindFirstFile/FindNextFile, но если вам это нужно быстрее, вам следует использовать ядро.
Однако решение для индексирования, описанное в ветке, не будет работать для систем FAT32 — отдайте должное MSalters
Термин «сканирование» не очень хорошо определен. Вы хотите прочитать каждый байт каждого файла? Самый простой способ — использовать список каталогов. Начните с нажатия корневого каталога. Затем, пока список каталогов не пуст, вызовите FindFirstFile/FindNextFile
для перечисления всех файлов и подкаталогов. Добавьте подкаталоги в список каталогов и прочитайте найденные файлы.
Обновление: для ваших целей будет достаточно FindFirstFileEx(FindExInfoBasic)
. Вы по-прежнему хотели бы обрабатывать только один каталог за раз (сначала в ширину) вместо того, чтобы входить в подкаталоги, как только вы их видите (сначала в глубину). Это быстрее, потому что записи каталога FAT32 в одном каталоге хранятся вместе, но подкаталоги обычно не хранятся рядом с родительскими каталогами.