RBA*_*RBA 5 delphi search file
我正在使用Delphi7,我需要一个解决一个大问题的解决方案.有人为我提供了一种比使用findnext和findfirst更快的搜索文件和文件夹的方法吗?因为我也处理每个文件/文件夹的数据(创建日期/作者/大小/等),这需要很多时间...我在WinApi下搜索了很多但可能我没有看到最好的功能为了实现这一目标.我在Delphi中发现的所有例子都是使用findfirst和findnext ......
另外,我不想购买组件或使用一些免费的组件......
提前致谢!
我认为您购买的任何组件也会使用findfirst/findnext.当然是递归的.我认为没有办法查看每个目录和文件,而不实际查看每个目录和文件.
作为一个基准来看看你的代码是否相当快,比较性能与WinDirStat http://windirstat.info/ (只是它收集数据,并准备建立其空间使用图.)
源代码是可用,如果你想看看他们在做什么.它是C,但我希望它使用相同的API调用.
如果您的卷是NTFS,那么您可以直接解析MFT的一件大事就是真正提高性能.通过这样做,您可以非常非常快速地枚举文件- 我们谈论的速度至少要快一个数量级.如果您需要的所有元数据都是MFT记录的一部分,那么您的搜索将更快完成.即使您需要对额外元数据进行更多读取,您也可以非常快速地构建候选文件列表.
缺点是你必须自己解析MFT:我知道没有WinAPI功能.你也会担心shell通常会为你担心硬链接,连接点,重新分析点,符号链接,shell链接等问题.
但是,如果你想要速度,复杂性的增加是实现它的唯一方法.
我不知道任何可用的Delphi代码已经实现了MFT解析器,因此您可能必须使用第三方库或自己实现它.我将建议使用Delphi编写的开源(GPL)NTFS Undelete,但它通过Python代码实现MFT解析,并内置了Delphi-Python桥.