加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 是否有一个替代Windows FindFirstFile / FindNextFile API

发布时间:2020-12-16 06:01:11 所属栏目:百科 来源:网络整理
导读:我正在使用 Windows API调用 FindFirstFile和 FindNextFile来搜索与目录中的某个通配符字符串匹配的文件.例如,我可能想在目录中找到所有XML文件,因此我使用模式“* .xml”进行搜索. 我遇到的问题是,如果我正在寻找3个字母的扩展名,并且一个文件的扩展名以3个
我正在使用 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读