2010-03-30 3 views

ответ

1

Проверить эту тему: How can I quickly enumerate directories on Win32?

Он фактически описывает FindFirstFile/FindNextFile, но если вам это нужно быстрее, вы должны пойти ядро.
Индекс решение, описанное в потоке будет, однако, не работает для систем FAT32 - кредитных MSalters

+0

Обратите внимание, что индекс решение намекается в вашем потоке предполагает NTFS chnage журналы; FAT32 в этом разделе исключает эту опцию. – MSalters

+0

спасибо MSalters. Я изменил свой ответ, чтобы включить это. Хотя, моя главная причина, чтобы опубликовать это, было проверить другую нить :) – Default

0

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

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

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