如何从FindFirstFile()获取多种文件类型是否可能?

时间:2014-01-11 17:57:55

标签: c++

如果我想获取JPEG文件列表,我将* .jpg传递给函数(在参数的末尾),FindFileNext()将逐个返回.jpg文件。如果我想让函数返回jpg和mp3文件怎么办?是否可以通过一个函数调用来完成它而不需要将两个字符串传递给函数?

3 个答案:

答案 0 :(得分:2)

您可以将*.*掩码传递给该函数,并在收到下一个文件后进行其他检查。

答案 1 :(得分:1)

在MSDN文档中: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx

您可以阅读:

lpFileName [in] The directory or path, and the file name, which can include wildcard characters, for example, an asterisk (*) or a question mark (?).

因此,您最多可以使用通配符,这不足以匹配两个不同的扩展名。

您可能需要执行两次搜索,首先使用jpg,第二次使用mp3。如果您担心效率,最好分析每种方法。

答案 2 :(得分:1)

您收到的答案仅表示两种可能性:分别搜索两个完全不同的时间,一次搜索*.jpg一次,一次搜索*.mp3,或者搜索*.*一次(和图你自己知道文件是否符合你关心的内容。

至少在这种特殊情况下,有一点中间立场。您可以搜索*.?p?,因为您关注的两个扩展程序的第二个字母是p。有了这个,您仍然需要自己进行某种比较,以确定给定文件是否真的具有您关注的两个扩展之一。因此,它不会简化您的代码。

同时,可以加快搜索速度。对FindNextFile的调用会产生相当大的开销,因此,如果您正在查看的目录中包含大量匹配?p?扩展名的文件,请避免检索它们只是为了忽略它们可以节省相当多的时间。

当然,这个 特定于你至少有一个匹配字母的情况,所以它并不是一个完全通用的技术。