FindFirstFile多种文件类型

时间:2012-01-08 20:17:56

标签: windows winapi

是否可以使用Windows API函数FindFirstFile同时搜索多种文件类型,例如*.txt*.doc

我尝试将模式与'\0'分开,但它不起作用 - 它只搜索第一个模式(我想,那是因为它认为'\0'是字符串的结尾)

当然,我可以使用FindFirstFile模式调用*.*,然后检查我的模式或为每种模式调用它,但我不喜欢这个想法 - 我只会在没有其他解决方案。

2 个答案:

答案 0 :(得分:17)

不支持此功能。使用不同的通配符运行两次。或者使用*.*并过滤结果。这绝对是更好的选择,因为支持传统的MS-DOS 8.3文件名,通配符无论如何都是模棱两可的。像* .doc这样的通配符会找到.doc和.docx文件。像longfilename.docx这样的文件名也会创建一个名为LONGFI~1.DOC

的条目

答案 1 :(得分:5)

MSDN docs没有提及FindFirstFile允许多种搜索模式,因此它不存在。

在这种情况下,您最好的选择是使用公开选择进行扫描(例如C:\\some directory\**),然后根据WIN32_FIND_DATA的{​​{1}}成员进行过滤, strrchr(或相应的Unicode变体)以查找扩展名。对于构成文件扩展名的一小组字符,它应该运行得非常快。

如果您知道所有扩展名都是3个字符,那么您应该可以将其屏蔽为cFileName以加快速度。