許多文件系統作業基本上都是查詢,因此非常適合 LINQ 方法。
請注意,本節中的查詢是非破壞性的。 它們不會用來變更源檔或資料夾的內容。 這會遵循查詢不應造成任何副作用的規則。 一般而言,修改源數據的任何程序代碼(包括執行建立/更新/刪除運算元的查詢),都應該與只查詢數據的程式代碼分開。
本節包含下列主題:
如何:查詢具有指定屬性或名稱的檔案 (Visual Basic)
示範如何藉由檢查其 FileInfo 物件的一或多個屬性來搜尋檔案。
如何:依擴展名分組檔案 (LINQ) (Visual Basic)
示範如何根據檔案副檔名傳回 FileInfo 物件群組。
如何:查詢一組資料夾中的位元組總數 (LINQ) (Visual Basic)
示範如何傳回指定目錄樹狀結構中所有檔案的位元組總數。
如何:比較兩個資料夾的內容 (LINQ) (Visual Basic)s
示範如何傳回存在於兩個指定資料夾中的所有檔案,以及存在於一個資料夾中而非另一個資料夾中的所有檔案。
如何:查詢目錄樹狀結構中最大的檔案或檔案 (LINQ) (Visual Basic)
示範如何在目錄樹狀目錄中傳回最大或最小檔案或指定數目的檔案。
如何:查詢目錄樹狀結構中的重複檔案 (LINQ) (Visual Basic)
示範如何將在指定目錄樹中多個位置出現的所有檔名進行分組。 也示範如何根據自定義比較子執行更複雜的比較。
如何查詢資料夾中的檔案內容 (LINQ) (Visual Basic)
示範如何逐一查看樹狀結構中的資料夾、開啟每個檔案,以及查詢檔案的內容。
評論
建立數據源有一些複雜度,可準確地表示文件系統的內容,並正常處理例外狀況。 本節中的範例會建立 物件的快照集集合,此集合 FileInfo 代表指定根資料夾及其所有子資料夾下的所有檔案。 每個 FileInfo 的實際狀態可能會在您開始和結束執行查詢的過程中發生變化。 例如,您可以建立要作為數據源的物件 FileInfo 清單。 如果您嘗試存取 Length 查詢中的 屬性, FileInfo 物件會嘗試存取檔案系統以更新 的值 Length。 如果檔案已不存在,即使您未直接查詢檔案系統,您還是會在查詢中取得 FileNotFoundException 。 本節中的某些查詢會使用不同的方法,在特定情況下會處理這些特定例外狀況。 另一個選項是使用 FileSystemWatcher來動態更新數據源。