C#使用FileSystemWatcher控件實(shí)現(xiàn)的文件監(jiān)控功能示例
本文實(shí)例講述了C#使用FileSystemWatcher控件實(shí)現(xiàn)的文件監(jiān)控功能。分享給大家供大家參考,具體如下:
FileSystemWatcher
可以使用FileSystemWatcher組件監(jiān)視文件系統(tǒng),并對文件系統(tǒng)的改變作出反應(yīng)。通過使用FileSystemWatcher組件,在特定的文件或目錄被創(chuàng)建、修改或刪除時,可以快速和便捷地啟動業(yè)務(wù)流程。
例如,如果一組用戶在合作處理一個存儲在服務(wù)器共享目錄下的文檔時,可以使用FileSystemWatcher組件編寫應(yīng)用程序來監(jiān)視對共享目錄的更改情況。當(dāng)檢測到更改時,該組件可以運(yùn)行處理過程,通過電子郵件通知每個用戶。
可以配置組件來監(jiān)視整個目錄及其內(nèi)容,或特定目錄下一個特定的文件或一組文件。若要監(jiān)視所有文件中的更改,應(yīng)將Filter屬性設(shè)置為空字符串("");若要監(jiān)視特定的文件,應(yīng)將Filter屬性設(shè)置為該文件的文件名(例如,若要監(jiān)視文件MyDoc.txt中的更改,將Filter屬性設(shè)置為"MyDoc.txt");也可以監(jiān)視特定文件類型中的更改,例如若要監(jiān)視文本文件中的更改,將Fillter屬性設(shè)置為"*.txt"。
【提示】不要忽略隱藏文件。
可監(jiān)視目錄或文件中的若干種更改。例如,可監(jiān)視文件或目錄的Attributes、LastWrite的日期和時間或Size的更改。通過將
FileSystemWatcher.NotifyFilter屬性設(shè)置為NotifyFilters中的某個值,就可以實(shí)現(xiàn)這個目標(biāo)。
還可以監(jiān)視文件或目錄的重命名、刪除或創(chuàng)建。例如,若要監(jiān)視文本文件的重命名,可將Filter屬性設(shè)置為"*.txt",并調(diào)用一個WaitForChanged方法,并設(shè)置該方法中WatcherChangeTypes的值為Renamed。
下面舉例說明。創(chuàng)建一個FileSystemWatche組件來監(jiān)視運(yùn)行時指定的目錄。組件被設(shè)置用來監(jiān)視LastWrite和LastAccess時間的更改,以及目錄中文本文件的創(chuàng)建、刪除或重命名。如果文件被更改、創(chuàng)建或刪除,則文件的路徑就會被輸出到控制臺。當(dāng)一個文件被重命名時,舊的和新的路徑都被輸出到控制臺。
實(shí)例 使用FileSystemWatche組件來監(jiān)視運(yù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并設(shè)置其屬性
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";
//添加事件句柄
//當(dāng)由FileSystemWatcher所指定的路徑中的文件或目錄的
//大小、系統(tǒng)屬性、最后寫時間、最后訪問時間或安全權(quán)限
//發(fā)生更改時,更改事件就會發(fā)生
watcher.Changed +=new FileSystemEventHandler(OnChanged);
//由FileSystemWatcher所指定的路徑中文件或目錄被創(chuàng)建時,創(chuàng)建事件就會發(fā)生
watcher.Created +=new FileSystemEventHandler(OnChanged);
//當(dāng)由FileSystemWatcher所指定的路徑中文件或目錄被刪除時,刪除事件就會發(fā)生
watcher.Deleted +=new FileSystemEventHandler(OnChanged) ;
//當(dāng)由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)
{
//指定當(dāng)文件被更改、創(chuàng)建或刪除時要做的事
Console.WriteLine("file:"+e.FullPath+""+e.ChangeType);
}
public static void OnRenamed(object sender,RenamedEventArgs e)
{
//指定當(dāng)文件被重命名時發(fā)生的動作
Console.WriteLine("Fi]e:{0} renamed to{1}",e.OldFullPath,e.FullPath);
}
}
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#文件操作常用技巧匯總》、《C#遍歷算法與技巧總結(jié)》、《C#程序設(shè)計之線程使用技巧總結(jié)》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》及《C#面向?qū)ο蟪绦蛟O(shè)計入門教程》
希望本文所述對大家C#程序設(shè)計有所幫助。
- C#中FileSystemWatcher類實(shí)現(xiàn)監(jiān)控文件夾
- C#利用FileSystemWatcher實(shí)時監(jiān)控文件的增加,修改,重命名和刪除
- C# FileSystemWatcher 在監(jiān)控文件夾和文件時的使用方法
- C#采用FileSystemWatcher實(shí)現(xiàn)監(jiān)視磁盤文件變更的方法
- c#使用filesystemwatcher實(shí)時監(jiān)控文件目錄的添加和刪除
- c#使用filesystemwatcher監(jiān)視文件系統(tǒng)的變化
- C#通過FileSystemWatcher監(jiān)聽文件的實(shí)戰(zhàn)技巧
相關(guān)文章
C#實(shí)現(xiàn)將32位MD5摘要串轉(zhuǎn)換為128位二進(jìn)制字符串的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將32位MD5摘要串轉(zhuǎn)換為128位二進(jìn)制字符串的方法,涉及C#字符串遍歷、加密與轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
Silverlight文件上傳下載實(shí)現(xiàn)方法(下載保存)
這篇文章主要介紹了Silverlight文件上傳下載實(shí)現(xiàn)方法(下載保存) ,需要的朋友可以參考下2015-11-11
C#使用StreamReader和StreamWriter類讀寫操作文件
這篇文章介紹了C#使用StreamReader和StreamWriter類讀寫操作文件的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
C#編程實(shí)現(xiàn)統(tǒng)計文件夾內(nèi)文件和隱藏文件的方法示例
這篇文章主要介紹了C#編程實(shí)現(xiàn)統(tǒng)計文件夾內(nèi)文件和隱藏文件的方法,結(jié)合具體實(shí)例形式分析了C#針對文件與目錄的遍歷及屬性操作相關(guān)技巧,需要的朋友可以參考下2017-07-07

