監視檔案系統事件簡介
更新: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 元件執行個體