C# FileSystemWatcher對象的實例
當FileSystemWatcher調用一個事件處理器時,它包含兩個自變量——一個叫做“sender”的對象和一個叫做“e”的FileSystemEventArgs對象。我們感興趣的自變量為FileSystemEventArgs自變量。這個對象中包含有提交事件的原因。以下是FileSystemEventArgs對象的一些屬性:
屬性:
1.Name——這個屬性中使事件被提交的文件的名稱。其中并不包含文件的路徑——只包含使用事件被提交的文件或目錄名稱。
2.ChangeType——這是一個WatcherChangeTypes,它指出要提交哪個類型的事件。其有效值包括:
◆Changed
◆Created
◆Deleted
◆Renamed
3.FullPath——這個屬性中包含使事件被提交的文件的完整路徑,包括文件名和目錄名。
代碼實例
下列代碼列出了C# FileSystemWatcher對象的一個簡單應用實例。在這個例子中,我們監控“C:Temp”目錄中是否建立了*.TXT文件。這可能是FileSystemWatcher的最簡單用法。
- publicvoid CreateWatcher(){
- //Create a new FileSystemWatcher.
- FileSystemWatcher watcher = newFileSystemWatcher();
- //Set the filter to only catch TXT files.
- watcher.Filter = "*.txt";
- //Subscribe to the Created event.
- watcher.Created += new
- FileSystemEventHandler(watcher_FileCreated);
- //Set the path to C:Temp
- watcher.Path = @"C:Temp";
- //Enable the FileSystemWatcher events.
- watcher.EnableRaisingEvents = true;
- }
- void watcher_FileCreated(object sender, FileSystemEventArgs e){
- //A new .TXT file has been created in C:Temp
- Console.WriteLine("A new *.txt file has been created!");
- }
應用
最初,FileSystemWatcher的用途可能并不明顯。當然,如果一個文件或目錄發生改變,它會向我們發出警報,但在哪些情況下我們需要這類信息呢?
如果一個系統允許客戶端上傳文件進行處理,這時可能就要用到C# FileSystemWatcher對象。盡管很明顯我們已經進入Web服務和SOA時代,但許多系統仍然要將平面文件插入到某些位置,不管是FTP服務器或網絡共享文件夾中。我已經將C# FileSystemWatcher對象應用到這種類型的系統中,雖然并不是完全沒有出錯,但它在“調查”目錄變化方面確實有一定的優勢。
如果你想讓兩個文件保持同步,這時也可以用到C# FileSystemWatcher對象。你可以用FileSystemWatcher同時監控這兩個文件的位置,如果其中一個出現更新,就提交一個Changed事件;然后你就可以將這些改變復制到其它系統/文件中。
如果你的系統有任何功能需要進行文件或目錄監控,你必須仔細了解那個組件,看是否可以使用C# FileSystemWatcher對象。在我的應用過程中,這個對象至少為送交給系統的每個文件節省了10秒鐘的時間。
【編輯推薦】