【发布时间】:2016-10-12 21:34:17
【问题描述】:
我想了解 FindFirstFile 和以下第一个 FindNextFile。 是真的吗,FindFirstFile 总是找到“。” (当前文件夹)和以下 FindNextFile 总是“..”(父文件夹)?掩码当然是'*'。我想加快文件列表速度,我可以写一些东西吗,比如:
h := FindFirstFile('path\*' ...) // it finds '.', not process
if h = INVALID_HANDLE_VALUE then ... // some error handling, of course
FindNextFile(...) // skipping '..', I suppose, if '.' has found,
// '..' will be too, no handle validity check
while FindNextFile(...) do
// file/folder processing begins here
所以我不需要检查 '.'和每个循环中的“..”文件名。对不起语法,我想我是可以理解的,如果我犯了错误,我的英语也很抱歉。
【问题讨论】:
-
这毫无意义,不会以任何可衡量的方式加速它,只会混淆。我也找不到任何可以保证订购的东西。简而言之,没有什么可以支持这样做的。
-
@DavidHeffernan 如果“路径”是“C:”,你就扔掉了两个非常好的目录条目。
-
加速枚举目录中文件的唯一真正方法是直接访问MFT。但是,事情变得复杂了,我不会打扰。
-
FindFirstFileEx在某些情况下可能比FindFirstFile更快。 -
这对于网络上的文件也可能会失败,具体取决于服务器运行的软件。
标签: winapi