c – 是否有一个替代Windows FindFirstFileFindNextFile API不搜索短文件名?

c – 是否有一个替代Windows FindFirstFileFindNextFile API不搜索短文件名?,第1张

概述我正在使用 Windows API调用 FindFirstFile和 FindNextFile来搜索与目录中的某个通配符字符串匹配的文件.例如,我可能想在目录中找到所有XML文件,因此我使用模式“* .xml”进行搜索. 我遇到的问题是,如果我正在寻找3个字母的扩展名,并且一个文件的扩展名以3个字母的扩展名开头,那么我的搜索将被抓住,即使扩展名包含更多的字符首先3.例如,如果我的文件名为somel 我正在使用 Windows API调用 FindFirstFile和 FindNextFile来搜索与目录中的某个通配符字符串匹配的文件.例如,我可能想在目录中找到所有XML文件,因此我使用模式“* .xml”进行搜索.

我遇到的问题是,如果我正在寻找3个字母的扩展名,并且一个文件的扩展名以3个字母的扩展名开头,那么我的搜索将被抓住,即使扩展名包含更多的字符首先3.例如,如果我的文件名为somelongname.xmlaaaa,这将通过搜索“* .xml”获取.该文件的短名称为somelo〜1.xml,与我的通配符字符串相匹配.

我可以做自己的通配符来解决这个问题,但是可能windows API能够比我更有效地执行此 *** 作,而我的代码会更简单.据我所知,没有办法强制这些功能忽略短名称.有没有API windows公开的这个功能?

解决方法 查看FindFirstfileEx – 它有一个fInfolevelID参数,它接受FINDEX_INFO_LEVELS枚举:
typedef enum _FINDEX_INFO_LEVELS {  FindExInfoStandard,FindExInfoBasic,FindExInfoMaxInfolevel } FINDEX_INFO_LEVELS;

FindExInfoBasic

The FindFirstfileEx function does not query the short file name,improving overall enumeration speed. The data is returned in a WIN32_FIND_DATA structure,and the cAlternatefilename member is always a NulL string.

然而:

windows Server 2008,windows Vista,windows Server 2003,and windows XP: This value is not supported until windows Server 2008 R2 and windows 7.

总结

以上是内存溢出为你收集整理的c – 是否有一个替代Windows FindFirstFile / FindNextFile API不搜索短文件名?全部内容,希望文章能够帮你解决c – 是否有一个替代Windows FindFirstFile / FindNextFile API不搜索短文件名?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1251703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存