有没有一种方法(在使用 Delphi 2010 的 Windows 上)无需实际遍历所有文件即可获取目录中的文件数?
我想在一些文件系统索引操作期间实现一个进度条。因此,我需要知道目录中有多少文件。
获取目录中文件数的最快方法是什么?
最佳答案
如果您在 Windows 7 或 Server 2008 R2 上运行,我建议从 SysUtils 中提取 FindFirst 和 FindMatchingFile 函数,并修改前者以使用 FindFirstFileEx 而不是 FindFirstFile。然后,您可以将附加标志参数设置为 2(在 MSDN 中定义为 FIND_FIRST_EX_LARGE_FETCH
),此设置暂时以 (Win32majorversion = 6) 和 (Win32minorversion >= 1) 为条件。
此设置会显着提高这些操作系统上的 FindFirst/FindNext 循环的速度。寻找FindFirstFileEx在 MSDN 上获取更多详细信息,因为最新文档不在 Delphi 帮助检索的 Microsoft 文档中。
TDirectory.GetFiles 最终似乎会调用 FindFirst,因此除了简化您自己的代码外不会给您带来太多好处。
关于windows - 如何有效地检索目录中的文件数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1648975/