1
在特定的目錄中,我需要找到具有某些特定擴展名(例如.log) 的所有文件,並將其保存在某處。只需要C++解決方案導致我在win 2003服務器上嘗試它,而C++是我的限制。非常感謝您的幫助在特定的Dir C++中通過擴展名搜索
在特定的目錄中,我需要找到具有某些特定擴展名(例如.log) 的所有文件,並將其保存在某處。只需要C++解決方案導致我在win 2003服務器上嘗試它,而C++是我的限制。非常感謝您的幫助在特定的Dir C++中通過擴展名搜索
您可以使用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);
}
的查找功能允許一個指定掩碼/過濾器,所以你甚至不需要檢查的延長,只是通過「* .LOG」,以用FindFirstFile – Necrolis 2010-09-22 17:48:38
@Necrolis:好點,我已經更新了我的答案並添加了示例代碼。 – 2010-09-22 18:30:25