我想了解有关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
因此,我不需要检查“。”和每个周期中的“ ..”文件名。对不起,我认为语法是可以理解的,如果我犯了错误,对我的英语也可以理解。
最佳答案
根本不能保证前两个条目将是'. '
和'..'
。因此,您建议的代码无法使用。
我想,您可以对是否已看到这两个条目的布尔值进行跟踪,如果是,则跳过检查。
但是,检查这些值不是您的瓶颈。枚举目录涉及到磁盘和系统调用的行程。那是瓶颈。对这些项目进行优化检查的任何尝试都将使您的代码变得混乱,并且不会产生明显的性能优势。