在特定的Dir C ++中按扩展名搜索

时间:2010-09-22 17:26:03

标签: c++ windows

在特定目录中,我需要查找具有某些特定扩展名的所有文件(例如.log) 而不是保存在某个地方。只需要c ++解决方案导致我在win 2003服务器上尝试它,而c ++是我的限制。非常感谢你咀嚼

1 个答案:

答案 0 :(得分:3)

您可以使用FindFirstFileFindNextFile枚举目录中的所有文件(并且在完成后不要忘记调用FindClose)。您可以将过滤器传递给这些函数,以仅查找某些文件名,例如directory\*.log

在枚举文件时,返回的WIN32_FIND_DATA结构会告诉您每个文件的文件名和属性(以及其他内容)。对于每个文件,检查文件属性以确保它是常规文件,方法是检查它是否具有FILE_ATTRIBUTE_NORMAL标志,以便忽略目录。

例如:

WIN32_FIND_DATA fileInfo;
HANDLE hFind = FindFirstFile("C:\\directory\\to\\search\\*.log", &fileInfo);
if(hFind == INVALID_HANDLE_VALUE)
    ;  // handle error
else
{
    do
    {
        if(fileInfo.dwFileAttributes & FILE_ATTRIBUTE_NORMAL)
        {
            printf("Found a .log file: %s\n", fileInfo.cFileName);
        }
    } while(FindNextFile(hFind, &fileInfo));
    if(GetLastError() != ERROR_NO_MORE_FILES)
        ;  // handle error
    FindClose(hFind);
}