有没有一种方法(在使用Delphi 2010的窗口)得到的文件的数量没有实际遍历所有文件的dirctory?
我想在一些文件系统索引操作中实现一个进度条。 出于这个原因,我需要知道目录中有多less个文件。
什么是最快的方式来获取目录中的文件数量?
我认为最快的方法是使用位于IOutils.pas中的TDirectory.GetFiles方法。 由于每个用户目录中(可见)文件的数量可能不同,因此只有一个很小的可能性,即以某种方式检索数字。
FindFirst / FindNext方法(包装在上面的方法中)并不实际遍历文件,它只遍历表中的条目,因此可能比预期的要快。
如果您在Windows 7或server 2008 R2上运行,我建议从SysUtils中提取FindFirst和FindMatchingFile函数,并使用FindFirstFileEx代替FindFirstFile。 然后,您可以设置其他标志参数为2(在MSDN中定义为FIND_FIRST_EX_LARGE_FETCH
),并且此时的设置条件(Win32majorversion = 6)和(Win32minorversion> = 1)暂时不变。
这个设置为这些操作系统上的FindFirst / FindNext循环产生非常显着的速度增加。 请在MSDN上查找FindFirstFileEx以获取更多详细信息,因为最新的文档不在Delphi帮助检索的Microsoft文档中。
TDirectory.GetFiles最终似乎调用FindFirst,所以除了简化你自己的代码之外,不会给你带来太多的好处。