C#使用FileSystemWatcher控件實現(xiàn)的文件監(jiān)控功能示例
本文實例講述了C#使用FileSystemWatcher控件實現(xiàn)的文件監(jiān)控功能。分享給大家供大家參考,具體如下:
FileSystemWatcher
可以使用FileSystemWatcher組件監(jiān)視文件系統(tǒng),并對文件系統(tǒng)的改變作出反應。通過使用FileSystemWatcher組件,在特定的文件或目錄被創(chuàng)建、修改或刪除時,可以快速和便捷地啟動業(yè)務流程。
例如,如果一組用戶在合作處理一個存儲在服務器共享目錄下的文檔時,可以使用FileSystemWatcher組件編寫應用程序來監(jiān)視對共享目錄的更改情況。當檢測到更改時,該組件可以運行處理過程,通過電子郵件通知每個用戶。
可以配置組件來監(jiān)視整個目錄及其內(nèi)容,或特定目錄下一個特定的文件或一組文件。若要監(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",并調(diào)用一個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) { //顯示調(diào)用程序的正確方法 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#相關內(nèi)容感興趣的讀者可查看本站專題:《C#文件操作常用技巧匯總》、《C#遍歷算法與技巧總結(jié)》、《C#程序設計之線程使用技巧總結(jié)》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構與算法教程》及《C#面向?qū)ο蟪绦蛟O計入門教程》
希望本文所述對大家C#程序設計有所幫助。
欄 目:C#教程
本文標題:C#使用FileSystemWatcher控件實現(xiàn)的文件監(jiān)控功能示例
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5543.html
您可能感興趣的文章
- 01-10C#使用Dispose模式實現(xiàn)手動對資源的釋放
- 01-10C#3.0使用EventLog類寫Windows事件日志的方法
- 01-10C#使用windows服務開啟應用程序的方法
- 01-10c# ArrayList的使用方法小總結(jié)
- 01-10C#使用ADO.Net部件來訪問Access數(shù)據(jù)庫的方法
- 01-10C#使用Mutex簡單實現(xiàn)程序單實例運行的方法
- 01-10使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 01-10C#實現(xiàn)ComboBox控件顯示出多個數(shù)據(jù)源屬性的方法
- 01-10C#實現(xiàn)讀取DataSet數(shù)據(jù)并顯示在ListView控件中的方法
- 01-10C#中yield用法使用說明


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
- 01-10關于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
隨機閱讀
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 04-02jquery與jsp,用jquery