有没有一种方法(使用德尔福2010年窗口),以获得文件的dirctory数量没有实际遍历所有文件?

我要实现一些文件系统索引操作过程中的进度条。出于这个原因,我需要知道有多少文件在目录中。

什么是让目录中的文件数量的最快方法?

有帮助吗?

解决方案

我认为最快的方法是使用位于IOutils.pas的TDirectory.GetFiles方法。作为在一个目录(可见)文件的数目可以是不同的每个用户,只有一个很小的机会存在只是一个数字,以检索某种方式。

在使用FindFirst / FindNext中的方法(其被包裹在上述方法)并不实际横越文件,它只穿过条目表中的,所以它可能是比预期更快。

其他提示

如果您在Windows 7或Windows Server 2008 R2上运行,我建议从提取的sysutils的了findFirst和FindMatchingFile功能和黑客前者使用的,而不是用FindFirstFile FindFirstFileEx。然后可以使用此设置空调上(Win32majorversion = 6)的附加标志参数设置为2(在MSDN定义为FIND_FIRST_EX_LARGE_FETCH)和(Win32minorversion> = 1),暂且。

此设置产生用于使用FindFirst / FindNext中一个非常显著速度增加循环对这些OS。寻找 FindFirstFileEx MSDN上的更多细节,最新文档是Delphi没有帮助检索到的微软文档。

TDirectory.GetFiles最终似乎需要的FindFirst,所以不会买你比简化自己的代码,其他的太大的优势。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top