jpf*_*ius 7 windows filesystems delphi delphi-2010
有没有办法(在使用Delphi 2010的Windows上)获取文件中的文件数而不实际遍历所有文件?
我想在一些文件系统索引操作期间实现进度条.出于这个原因,我需要知道目录中有多少文件.
获取目录中文件数的最快方法是什么?
fro*_*ogb 12
如果您在Windows 7或Server 2008 R2上运行,我建议从SysUtils中提取FindFirst和FindMatchingFile函数,并破解前者以使用FindFirstFileEx而不是FindFirstFile.然后,您可以将附加flags参数设置为2(在MSDN中定义为FIND_FIRST_EX_LARGE_FETCH),此设置暂时以(Win32majorversion = 6)和(Win32minorversion> = 1)为条件.
此设置为这些操作系统上的FindFirst/FindNext循环产生非常显着的速度增加.在MSDN上查找FindFirstFileEx以获取更多详细信息,因为最新文档不在Delphi帮助检索的Microsoft文档中.
TDirectory.GetFiles最终似乎调用了FindFirst,因此除了简化自己的代码之外,不会给你带来太大的好处.
我认为最快的方法是使用位于IOutils.pas中的TDirectory.GetFiles方法.由于目录中(可见)文件的数量可能因每个用户而异,因此只有很少的机会只能以某种方式检索.
FindFirst/FindNext方法(包含在上面的方法中)实际上并不遍历文件,它只遍历表中的条目,因此它可能比预期的更快.
| 归档时间: |
|
| 查看次数: |
3129 次 |
| 最近记录: |