在特定目录中,我需要查找具有某些特定扩展名的所有文件(例如.log) 而不是保存在某个地方。只需要c ++解决方案导致我在win 2003服务器上尝试它,而c ++是我的限制。非常感谢你咀嚼
答案 0 :(得分:3)
您可以使用FindFirstFile
和FindNextFile
枚举目录中的所有文件(并且在完成后不要忘记调用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);
}