C# FileSystemWatcher對(duì)象的實(shí)例
當(dāng)FileSystemWatcher調(diào)用一個(gè)事件處理器時(shí),它包含兩個(gè)自變量——一個(gè)叫做“sender”的對(duì)象和一個(gè)叫做“e”的FileSystemEventArgs對(duì)象。我們感興趣的自變量為FileSystemEventArgs自變量。這個(gè)對(duì)象中包含有提交事件的原因。以下是FileSystemEventArgs對(duì)象的一些屬性:
屬性:
1.Name——這個(gè)屬性中使事件被提交的文件的名稱。其中并不包含文件的路徑——只包含使用事件被提交的文件或目錄名稱。
2.ChangeType——這是一個(gè)WatcherChangeTypes,它指出要提交哪個(gè)類型的事件。其有效值包括:
◆Changed
◆Created
◆Deleted
◆Renamed
3.FullPath——這個(gè)屬性中包含使事件被提交的文件的完整路徑,包括文件名和目錄名。
代碼實(shí)例
下列代碼列出了C# FileSystemWatcher對(duì)象的一個(gè)簡(jiǎn)單應(yīng)用實(shí)例。在這個(gè)例子中,我們監(jiān)控“C:Temp”目錄中是否建立了*.TXT文件。這可能是FileSystemWatcher的最簡(jiǎn)單用法。
- 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!");
- }
應(yīng)用
最初,F(xiàn)ileSystemWatcher的用途可能并不明顯。當(dāng)然,如果一個(gè)文件或目錄發(fā)生改變,它會(huì)向我們發(fā)出警報(bào),但在哪些情況下我們需要這類信息呢?
如果一個(gè)系統(tǒng)允許客戶端上傳文件進(jìn)行處理,這時(shí)可能就要用到C# FileSystemWatcher對(duì)象。盡管很明顯我們已經(jīng)進(jìn)入Web服務(wù)和SOA時(shí)代,但許多系統(tǒng)仍然要將平面文件插入到某些位置,不管是FTP服務(wù)器或網(wǎng)絡(luò)共享文件夾中。我已經(jīng)將C# FileSystemWatcher對(duì)象應(yīng)用到這種類型的系統(tǒng)中,雖然并不是完全沒有出錯(cuò),但它在“調(diào)查”目錄變化方面確實(shí)有一定的優(yōu)勢(shì)。
如果你想讓兩個(gè)文件保持同步,這時(shí)也可以用到C# FileSystemWatcher對(duì)象。你可以用FileSystemWatcher同時(shí)監(jiān)控這兩個(gè)文件的位置,如果其中一個(gè)出現(xiàn)更新,就提交一個(gè)Changed事件;然后你就可以將這些改變復(fù)制到其它系統(tǒng)/文件中。
如果你的系統(tǒng)有任何功能需要進(jìn)行文件或目錄監(jiān)控,你必須仔細(xì)了解那個(gè)組件,看是否可以使用C# FileSystemWatcher對(duì)象。在我的應(yīng)用過程中,這個(gè)對(duì)象至少為送交給系統(tǒng)的每個(gè)文件節(jié)省了10秒鐘的時(shí)間。
【編輯推薦】