首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在FindFirstFile-FindNextFile中使用此技巧加快文件搜索?

在FindFirstFile-FindNextFile中使用此技巧加快文件搜索?
EN

Stack Overflow用户
提问于 2016-10-12 21:34:17
回答 2查看 632关注 0票数 3

我想知道关于FindFirstFile和下面的第一个FindNextFile。是真的吗,FindFirstFile总是能找到'.‘(当前文件夹)和下面的FindNextFile总是‘.’(父文件夹)?当然,面具是“*”。我想要加速一些文件列表,我能写点东西吗,比如:

代码语言:javascript
复制
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

所以我不需要检查。还有“..”每个周期的文件名。对不起语法,我想,我是可以理解的,我的英语,如果我犯了错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-13 06:50:29

根本不能保证前两个条目是'. ''..'。所以你的建议代码不能被使用。

我想,您可以在布尔值中跟踪是否见过这两个条目,如果是这样的话,可以跳过检查。

但是,检查这些值并不是瓶颈。枚举目录需要访问磁盘和系统调用。这就是瓶颈。对这些项进行优化检查的任何尝试都会混淆您的代码,并且不会产生明显的性能效益。

票数 1
EN

Stack Overflow用户

发布于 2016-10-13 13:00:46

谢谢你的回答。我的爱好之一是找到最好的解决方案,算法在简短的基本代码,(如果需要,直到组装级)。在我的实践中,这似乎是真的,我经历过。但是没有找到任何关于它的文档,我想,它取决于Find*File的内部行为和硬盘的数据结构。所以我才问。再次感谢。

乔纳森:我真的和FindFirstFileEx一起使用了FIND_FIRST_EX_LARGE_FETCH,不像在示例代码中那样:)我认为使用Ex与否在这个问题上是不相关的。

IInspectable:你说得对,我不想陷入MFT :)

我不会使用这种形式的代码。正如David所建议的那样,我将使用一个变量,但是一个整数类型从2开始计数,如果计数器达到0,则不再需要检查名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40008737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档