我使用Windows API調用FindFirstFile和FindNextFile來搜索與目錄中的某個通配符字符串匹配的文件。例如,我可能想要查找目錄中的所有XML文件,因此我使用「* .xml」模式進行搜索。是否有替代Windows FindFirstFile/FindNextFile API不搜索短文件名?
我遇到了問題,如果我在搜索3個字母的擴展名,並且文件的擴展名以3個字母的擴展名開頭,那麼即使擴展名包含例如,如果我的文件被命名爲somelongname.xmlaaaa,則將通過搜索「* .xml」獲取該文件。該文件的簡稱是somelo〜1.xml,它與我的通配符字符串相匹配。
我可以做我自己的通配符匹配來解決這個問題,但大概一個Windows API將能夠比我更有效地做到這一點,我的代碼會更簡單。據我所知,沒有辦法強制這些功能忽略短名稱。是否有任何API Windows公開此功能?
有趣。我需要支持Windows XP,所以我可能不能依賴這個功能。不幸的是,在Windows 7中添加到此API中的事實可能表明,在此之前它不存在於任何其他API中。 –
看起來就是這樣。對不起,你失敗了:)並感謝編輯,@ Rob – JoeFish
原來這個文檔是非常誤導。即使您在FindExInfoBasic中傳遞,搜索仍將找到與短名稱匹配的文件。它不會在WIN32_FIND_DATA結構的cAlternateFileName成員中包含短文件名。 –