Share via


LINQ 和檔案目錄

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

注意事項注意事項

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

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

本章節包括下列主題:

註解

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

請參閱

概念

LINQ to Objects