贊助商連結

八月 02, 2006

監看檔案的異動

| 原始連結

軟體的功能越來越強大也越來越方便,於是不知不覺中一些很神奇的事就會被視為理所當然,但是只要仔細的找一找你就會發現其實有很多的不可思異之處,假如你的電腦是安裝Windows的作業系統的話,應該對每天都會用到的檔案總管很熟悉吧,你可以照以下步驟做:先打開檔案總管並將目錄指向”桌面”,這個時後你會在右邊的清單中看到因為懶得整理而散亂在桌面上的所有檔案,現在直接在桌面上隨便選一個沒有用的檔案然後按F2更改檔名,這時後檔案總管發現你偷改檔名所以也再右邊的清單中自動更新檔名了,真是厲害…。

我知道很多人看到這裡大概正準備按”上一頁”離開了,這不過是件普通的不能在普通的事,但如果你正巧不是很忙的話還請稍等一下,我正開始要告訴你如何在程式中運用這平凡又好用的功能。

在.NET龐大的類別庫中有一個FileSystemWatcher物件,它擁有接收來自作業系統中對於檔案更動訊息的能力,為了讓你能快速的認識它我打算寫一個小小的程式示範如何監看檔案的異動。



這是一個視窗程式,我在程式中宣告了一個FileSystemWatcher物件,並關將Path屬性設定為 “d:\Temp”、Filter屬性設為”*.*”、這表示FileSystemWatcher會監看d:\Temp下的所有檔案另外我還將IncludeSubdirectories屬性設為true,這會讓FileSystemWatcher連同d:\Temp目錄下的子目錄也納入監看的範圍,fsw.Renamed += new RenamedEventHandler(fsw_Renamed);這行則是用來引發檔案更名事件,這樣一來FileSystemWatcher可能接收到Rename的通知,最後的 EnableRaisingEvents = true 就會開使在背景執行緒中進行檔案的監看。

現在只要d:\Temp 目錄下有任何檔案名稱被改變就會自動顯示於視窗中。

 
FileSystemWatcher除了Renamed事件外還有Create、Changed、Deleted三個事件,分別可以監看檔案的新增、更改及刪除,利用這幾個事件你可以發揮創意做出很多令人驚奇的效果,比如說資料檔被修改後自動重新讀取並顯示新的資料,程式甚至不需要重新啟動,當然也許人們會因為太習慣而遺忘它所帶來的便利,不過這真的是體貼使用者的良好設計。