Как я могу эффективно получить количество файлов в каталоге?

Лучший способ? Установите свой терминал для использования vi привязок клавиш.

7
задан jpfollenius 30 October 2009 в 10:16
поделиться

2 ответа

Я думаю, что самый быстрый способ - использовать метод TDirectory.GetFiles, расположенный в IOutils.pas. Поскольку количество (видимых) файлов в каталоге может быть разным для каждого пользователя, существует лишь малая вероятность того, что есть только число, которое нужно каким-то образом извлечь.

Подход FindFirst / FindNext (который заключен в вышеуказанный метод ) фактически не просматривает файлы, а только просматривает записи в таблице, поэтому может быть быстрее, чем ожидалось.

8
ответ дан 6 December 2019 в 09:20
поделиться

Если вы работаете в Windows 7 или Server 2008 R2, я рекомендую распаковать FindFirst и FindMatchingFile функции из SysUtils и взломать первый, чтобы использовать FindFirstFileEx вместо FindFirstFile. Затем вы можете установить для параметра дополнительных флагов значение 2 (определенное в MSDN как FIND_FIRST_EX_LARGE_FETCH ) с этим параметром, обусловленным (Win32majorversion = 6) и (Win32minorversion> = 1), на данный момент.

Это Эта настройка приводит к очень значительному увеличению скорости циклов FindFirst / FindNext в этих ОС. Для получения дополнительных сведений найдите FindFirstFileEx в MSDN, так как последней версии документации нет в документации Microsoft, полученной с помощью Delphi help.

TDirectory.GetFiles в конечном итоге вызывает FindFirst,

12
ответ дан 6 December 2019 в 09:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: