2014-01-11 27 views

回答

1

在MSDN文檔: http://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx

你可以閱讀:

lpFileName [in] The directory or path, and the file name, which can include wildcard characters, for example, an asterisk (*) or a question mark (?).

所以,最多可以使用通配符,這是不夠的,以配合兩個不同的擴展。

您可能需要執行兩次搜索,第一次使用jpg,第二次使用mp3。如果您擔心效率問題,最好分析每種方法。

+0

正如我所預料的,顯然這是不可能的。謝謝 – user2808671

2

您可以將*.*掩碼傳遞給函數,並在您接收到下一個文件時執行其他檢查。

+0

不,我不想獲取所有文件,然後檢查它們。這是浪費時間和慢跑。 – user2808671

+2

我不確定是否可以將多個文件掩碼作爲一個參數傳遞。從另一方面來說,我很確定FindFirstFile()/ FindNextFile()函數在內部做類似的檢查。所以跑步實際上不會變慢。 – vershov

+0

是的,我在想它。謝謝你 – user2808671

1

你接受的答案意味着只有兩種可能:要麼尋找兩個完全不同的時代,一次*.jpg,一次用於*.mp3,或者用於*.*搜索一次(並找出你自己的文件是否符合你關心什麼約或不)。

至少在這種特殊情況下,有一點中間地帶。您可以搜索*.?p?,因爲您關心的兩個擴展的第二個字母是p。有了這個,你仍然需要自己做一些比較來找出給定的文件是否真的有你關心的兩個擴展之一。因此,它不會簡化你的代碼。

與此同時,它可以加快搜索相當多。撥打FindNextFile有一個相當大的開銷,所以如果你正在看的目錄有很多不是匹配?p?擴展名的文件,避免檢索它們都只是爲了忽略它們可以節省相當多的時間。

當然,這個特定於至少有一個匹配字母的情況,所以它不是一個完全一般的技術。

+0

好的提示。非常感謝你 :) – user2808671

相關問題