共用方式為


監視檔案系統事件簡介

更新:2007 年 11 月

您可以使用 FileSystemWatcher 元件來監視檔案系統,而當檔案系統所包含的目錄或檔案變更時,也可以利用它來回應。這讓您能夠在特定檔案或目錄被建立、修改或刪除時快速且容易啟動商務處理流程。例如,假設您和一群同事共用一份儲存在您伺服器上共用資料夾的文件。使用 FileSystemWatcher 元件的執行個體,您就能夠設定應用程式來監看該共用目錄內容的變更。當偵測到變更,元件會執行程序來透過電子郵件告知每位群組成員。

注意事項:

FileSystemWatcher 元件是設計來監視目錄內的變更,而不是根目錄屬性本身的變更。例如,如果您正在監看名為 c:\MyProjects 的目錄,元件就會監視目錄內的變更,而不是根目錄本身的變更。

您可以將元件設定為監看整個目錄及其內容,也可以監看指定目錄內的特定檔案或幾個檔案。只要建立、刪除、重新命名,或是以其他方式變更檔案或指定根目錄內的子目錄時,FileSystemWatcher 元件就會引發事件。元件監視的變更類型包括檔案或子目錄屬性、大小、上次寫入時間、上次存取時間及安全性設定的變更。

安全性注意事項:

如果惡意程式取得 FileSystemWatcher 元件監視之目錄的存取權,並產生許多元件無法管理的變更,就有可能發生拒絕服務攻擊。遵循 高容量系統的檔案變更考量 中的建議,然後適當使用存取控制清單,以降低拒絕服務攻擊的風險。

目錄層次事件

當變更發生於您應用程式所監視的根目錄內或檔案時,即會引發一或多個事件,接著將事件儲存在緩衝區中,最後再傳遞至您的元件來處理。FileSystemWatcher 元件能讓您存取以下事件:

  • Created:建立目錄或檔案時引發。

  • Deleted:刪除目錄或檔案時引發。

  • Renamed:變更目錄或檔案名稱時引發。

  • Changed:變更目錄或檔案的大小、系統屬性、上次寫入時間、上次存取時間或安全性權限時引發。

    注意事項:

    雖然像複製或移動檔案等的一些常見動作並未直接對應到事件,但這些動作還是會引發事件。當您複製檔案時,系統會在複製檔案之目的目錄引發 Created 事件,但不會在原始目錄引發任何事件。當您移動檔案時,伺服器會引發兩個事件:先在來源目錄中引發 Deleted 事件,接著在目標目錄中引發 Created 事件。

在目錄中變更檔案的每個動作都會引發個別事件。如果使用者對單一檔案進行多項變更,應用程式會為每項變更引發個別事件。例如,如果您正在監看包含五個檔案的目錄,而其中所有檔案的安全權限突然變更,則會收到五個 Changed 事件。如果使用者重新命名並指派新的安全權限給每個檔案,則您會收到十個告知,也就是五個檔案的 Changed 事件和 Renamed 事件。

請參閱

工作

HOW TO:建立 FileSystemWatcher 元件執行個體

HOW TO:設定 FileSystemWatcher 元件執行個體

HOW TO:建立檔案系統事件的處理常式

HOW TO:等候直到指定的檔案系統事件發生

概念

高容量系統的檔案變更考量