是否可以使用Windows API函數FindFirstFile
來同時搜索多個文件類型,例如*.txt
和*.doc
?FindFirstFile多種文件類型
我試圖用'\0'
分離模式,但它不起作用 - 它只搜索第一個模式(我猜,那是因爲它認爲'\0'
是字符串的結尾)。
當然,我可以叫FindFirstFile
與*.*
圖案,然後檢查我的圖案或稱它爲每個模式,但我不喜歡這個主意 - 我將只使用它,如果有沒有其他的解決方案。
是否可以使用Windows API函數FindFirstFile
來同時搜索多個文件類型,例如*.txt
和*.doc
?FindFirstFile多種文件類型
我試圖用'\0'
分離模式,但它不起作用 - 它只搜索第一個模式(我猜,那是因爲它認爲'\0'
是字符串的結尾)。
當然,我可以叫FindFirstFile
與*.*
圖案,然後檢查我的圖案或稱它爲每個模式,但我不喜歡這個主意 - 我將只使用它,如果有沒有其他的解決方案。
這不支持。用不同的通配符運行兩次。或者使用*.*
並過濾結果。這肯定是更好的選擇,通配符由於支持傳統的MS-DOS 8.3文件名而不明確。例如* .doc這樣的通配符會找到.doc和.docx文件。像longfilename.docx
這樣的文件名也會創建一個名稱爲LONGFI~1.DOC
MSDN docs沒有提及任何關於允許多種搜索模式的FindFirstFile
,因此它不存在。
在這種情況下,你最好的辦法是使用掃描公開選拔(如C:\\some directory\*
或*
),然後根據WIN32_FIND_DATA
的cFileName
成員過濾,使用strrchr
(或相應的Unicode變體)找到擴展。對於構成文件擴展名的一小組字符,它應該運行得非常快。
如果您知道所有的擴展名都是3個字符,您應該能夠將其屏蔽爲*.???
以加快速度。
性能問題不是需要多長時間才能過濾文件名,因爲這需要在某處完成。這是你一次又一次地敲擊API函數的事實。但是,FindNextFile在我的經驗中表現得非常好,所以我懷疑這是一個問題。 – 2012-01-08 20:57:53
據我所知,你不能指定多個通配符。你將不得不使用'*'來過濾自己。 – 2012-01-08 20:52:18