C# FileSystemWatcher文件监控实例
FileSystemWatcher
可以使用FileSystemWatcher組件監(jiān)視文件系統(tǒng),并對文件系統(tǒng)的改變作出反應。通過使用FileSystemWatcher組件,在特定的文件或目錄被創(chuàng)建、修改或刪除時,可以快速和便捷地啟動業(yè)務流程。
例如,如果一組用戶在合作處理一個存儲在服務器共享目錄下的文檔時,可以使用FileSystemWatcher組件編寫應用程序來監(jiān)視對共享目錄的更改情況。當檢測到更改時,該組件可以運行處理過程,通過電子郵件通知每個用戶。
可以配置組件來監(jiān)視整個目錄及其內容,或特定目錄下一個特定的文件或一組文件。若要監(jiān)視所有文件中的更改,應將Filter屬性設置為空字符串("");若要監(jiān)視特定的文件,應將Filter屬性設置為該文件的文件名(例如,若要監(jiān)視文件MyDoc.txt中的更改,將Filter屬性設置為"MyDoc.txt");也可以監(jiān)視特定文件類型中的更改,例如若要監(jiān)視文本文件中的更改,將Fillter屬性設置為"*.txt"。
【提示】不要忽略隱藏文件。
可監(jiān)視目錄或文件中的若干種更改。例如,可監(jiān)視文件或目錄的Attributes、LastWrite的日期和時間或Size的更改。通過將
FileSystemWatcher.NotifyFilter屬性設置為NotifyFilters中的某個值,就可以實現(xiàn)這個目標。
還可以監(jiān)視文件或目錄的重命名、刪除或創(chuàng)建。例如,若要監(jiān)視文本文件的重命名,可將Filter屬性設置為"*.txt",并調用一個WaitForChanged方法,并設置該方法中WatcherChangeTypes的值為Renamed。
下面舉例說明。創(chuàng)建一個FileSystemWatche組件來監(jiān)視運行時指定的目錄。組件被設置用來監(jiān)視LastWrite和LastAccess時間的更改,以及目錄中文本文件的創(chuàng)建、刪除或重命名。如果文件被更改、創(chuàng)建或刪除,則文件的路徑就會被輸出到控制臺。當一個文件被重命名時,舊的和新的路徑都被輸出到控制臺。
實例?使用FileSystemWatche組件來監(jiān)視運行時指定的目錄:
using System; using System.IO; public class watcher {public static void Main(string[] args) {//如果沒有指定目錄,則退出程序if(args.Length!=1) {//顯示調用程序的正確方法Console.WriteLine("usage:Watcher.exe(directory)");return;}//創(chuàng)建一個新的FileSystemWatcher并設置其屬性FileSystemWatcher watcher=new FileSystemWatcher();watcher.Path=args[O];/*監(jiān)視LastAcceSS和LastWrite時間的更改以及文件或目錄的重命名*/watcher.NotifyFilter=NotifyFilters.LastAccess | NotifyFilters.LastWrite |NotifyFilters.FileName | NotifyFilters.DirectoryName;//只監(jiān)視文本文件watcher.Filter="*.txt";//添加事件句柄//當由FileSystemWatcher所指定的路徑中的文件或目錄的//大小、系統(tǒng)屬性、最后寫時間、最后訪問時間或安全權限//發(fā)生更改時,更改事件就會發(fā)生watcher.Changed +=new FileSystemEventHandler(OnChanged);//由FileSystemWatcher所指定的路徑中文件或目錄被創(chuàng)建時,創(chuàng)建事件就會發(fā)生watcher.Created +=new FileSystemEventHandler(OnChanged);//當由FileSystemWatcher所指定的路徑中文件或目錄被刪除時,刪除事件就會發(fā)生watcher.Deleted +=new FileSystemEventHandler(OnChanged) ;//當由FileSystemWatcher所指定的路徑中文件或目錄被重命名時,重命名事件就會發(fā)生watcher.Renamed +=new RenamedEventHandler(OnRenamed);//開始監(jiān)視watcher.EnableRaisingEvents=true;//等待用戶退出程序Console.WriteLine("Press\'q\' to quit the sample.");while(Console.Read()!='q');}//定義事件處理程序public static void OnChanged(object sender,FileSystemEventArgs e) {//指定當文件被更改、創(chuàng)建或刪除時要做的事Console.WriteLine("file:"+e.FullPath+""+e.ChangeType);}public static void OnRenamed(object sender,RenamedEventArgs e) {//指定當文件被重命名時發(fā)生的動作Console.WriteLine("Fi]e:{0} renamed to{1}",e.OldFullPath,e.FullPath);} }總結
以上是生活随笔為你收集整理的C# FileSystemWatcher文件监控实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 封装
- 下一篇: NET问答: 如何使用 C# 自动化关闭