windows - 如何有效地检索目录中的文件数?

标签 windows delphi filesystems delphi-2010

有没有一种方法(在使用 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/

相关文章:

德尔福 7 : int64 size bug?

delphi - 如何对 TImage 中加载的 Png 图形使用 FloodFill?

node.js - Node 从 %appdata% 读取文件

java - 在 Windows 上运行 Java 独立应用程序(作为服务)

windows - 如何对 live windows 7 窗口内容进行 3d 操作?

c++ - exe 文件无法启动,因为缺少 libgomp_64-1.dll (Eclipse)

窗口命令 : echo without new line but with CR

delphi - 在构造函数中获取组件名称?

c++ - 在执行过程中如何用C++代码在计算机中找到Iostream文件

linux - 将文件属性更改提交到 git 存储库