在Directory.GetFiles()中組合檔案過濾器
.NET中的Directory.GetFiles()方法提供了一個方便的方法來檢索與特定篩選器相符的檔案清單。但是,當嘗試過濾多種文件類型時,預設行為是僅檢索與第一個過濾器匹配的文件。
儘管嘗試了諸如“.mp3|.jpg”和“.mp3;.jpg”之類的組合,但這些方法都無法在一個調用中捕獲這兩種文件類型。為了解決此限制,請考慮以下替代方案:
對於.NET 4.0及更高版本:
實作一個LINQ查詢來篩選Directory.EnumerateFiles()的結果,該方法會擷取目錄中的所有檔案路徑。查詢過濾特定檔案副檔名(.mp3和.jpg)。
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
對於早期版本的.NET:
使用Directory.GetFiles()方法檢索與任何副檔名(.)相符的文件,並套用LINQ查詢來篩選結果。
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
注意: 請考慮註解中關於使用字串Contains函數而不是EndsWith函數來最佳化效能的建議。此外,請注意使用EnumerateFiles()方法時可能出現的記憶體問題,如果沒有先釋放底層對象,可能會超過分配的記憶體限制。
以上是如何在Directory.getFiles()中組合多個文件過濾器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!