Share via


LINQ 和檔案目錄

更新:2007 年 11 月

許多檔案系統作業基本上就是查詢,因此最適合 LINQ 方式。

注意事項:

若要同時針對多種類型的檔案和文件內容執行程式設計查詢,請考慮使用 Windows 桌面搜尋引擎 (英文)。雖然您目前無法使用 LINQ 查詢它,但是它卻可提供能夠有效應付檔案系統複雜度的強大索引服務。

請注意,本節中的查詢是非破壞性的。不可以用來變更原始檔案或資料夾的內容。這是依照查詢不應該造成任何副作用的規則。一般而言,任何修改來源資料的程式碼 (包括執行 create/update/delete 運算子的查詢),都應該與單純查詢資料的程式碼分開。

本章節包括下列主題:

註解

要建立能夠精確代表檔案系統內容,同時又能順利處理例外狀況 (Exception) 的資料來源,其實是件複雜的工作。本節中的範例會建立 FileInfo 物件的快照集 (Snapshot) 集合,以代表所指定根資料夾和其所有子資料夾下的所有檔案。自查詢開始到查詢結束的整個期間,每個 FileInfo 的實際狀態都可能會變更。例如,您可以建立 FileInfo 物件的清單做為資料來源。如果您嘗試在查詢中存取 Length 屬性,則 FileInfo 物件會嘗試存取檔案系統以更新 Length 的值。如果檔案不再存在,則即使您並未直接查詢檔案系統,也會在查詢中收到 FileNotFoundException。本節中的某些查詢會專門使用一個方法,在特定情況下消化這類例外狀況。另一個選項是使用 FileSystemWatcher 持續動態更新資料來源。

請參閱

概念

LINQ to Objects