FileSystemWatcher 監視指定目錄中的變動

.Net框架類庫中的FileSystemWatcher如它的名稱同樣是一個用於監視文件系統變化的一個控件。使用 FileSystemWatcher 監視指定目錄中的更改。可監視指定目錄中的文件或子目錄的更改。能夠建立一個組件來監視本地計算機、網絡驅動器或遠程計算機上的文件。javascript

若要監視全部文件中的更改,請將 Filter 屬性設置爲空字符串 ("") 或使用通配符(「*.*」)。若要監視特定的文件,請將 Filter 屬性設置爲該文件名。例如,若要監視文件 MyDoc.txt 中的更改,請將 Filter 屬性設置爲「MyDoc.txt」。也能夠監視特定類型文件中的更改。例如,若要監視文本文件中的更改,請將 Filter 屬性設置爲「*.txt」。html

 

可監視目錄或文件中的若干種更改。例如,可監視文件或目錄的 Attributes、LastWrite 日期和時間或 Size 方面的更改。經過將 NotifyFilter 屬性設置爲 NotifyFilters 值之一來達到此目的。java

 

可監視文件或目錄的重命名、刪除或建立。例如,若要監視文本文件的重命名,請將 Filter 屬性設置爲「*.txt」,並使用爲其參數指定的 Renamed 來調用 WaitForChanged 方法。安全

 

下面的示例使用FileSystemWatcher監視當前應用程序下的全部.txt文本文件的變動:網絡

 

複製代碼
        // 定義FileSystemWatcher對象
        FileSystemWatcher fsw  =   null ;
        
public  frm12FileSystemWatcher()
        {
            InitializeComponent();

            
// 實例化一個FileSystemWatcher對象
            fsw  =   new  FileSystemWatcher();
            
// 設置要監視的目錄的路徑,當前程序運行的目錄
            fsw.Path  =  Application.StartupPath;
            
// 肯定在目錄中監視全部的.txt文件
            fsw.Filter  =   " *.txt " ;
            
// 監視的目錄中建立文件或目錄時引起的事件
            fsw.Created  +=   new  FileSystemEventHandler(fsw_Created);
            
// 監視的目錄中刪除文件或目錄時引起的事件
            fsw.Deleted  +=   new  FileSystemEventHandler(fsw_Deleted);

            
// 監視的目錄中改變文件或目錄時引起的事件
            
// 監視的目錄中的文件或目錄的大小、系統屬性、
            
// 上次寫入時間、上次訪問時間或安全權限進行更改時
            
// 能夠經過設置可組合 NotifyFilters 枚舉的成員,以同時監視多種類型的更改
            fsw.Changed  +=   new  FileSystemEventHandler(fsw_Changed);
        }

        
void  fsw_Changed( object  sender, FileSystemEventArgs e)
        {
            
// 因爲不能跨線程訪問,通匿名方法將顯示操做交給主線程
             this .Invoke((MethodInvoker) delegate () { listBox1.Items.Add( " 文件: "   +  e.FullPath  +   " 被修改 " ); });
        }

        
void  fsw_Created( object  sender, FileSystemEventArgs e)
        {
           
// 因爲不能跨線程訪問,通匿名方法將顯示操做交給主線程
             this .Invoke((MethodInvoker) delegate () { listBox1.Items.Add( " 文件: "   +  e.FullPath  +   " 被建立 " ); });
        }

        
void  fsw_Deleted( object  sender, FileSystemEventArgs e)
        {
           
// 因爲不能跨線程訪問,通匿名方法將顯示操做交給主線程
             this .Invoke((MethodInvoker) delegate () { listBox1.Items.Add( " 文件: "   +  e.FullPath  +   " 被刪除 " ); });
        }

        
private   void  btnStart_Click( object  sender, EventArgs e)
        {
            
// 監視開始
            fsw.EnableRaisingEvents  =   true ;
            
// 建立一個文件,並寫入當前的日期時間
            File.AppendAllText( " textFile.txt " , DateTime.Now.ToString());
            
// 修改文件,寫入當前的日期時間
            File.AppendAllText( " textFile.txt " , DateTime.Now.ToString());
            
// 刪除文件
            File.Delete( " textFile.txt " );
        }
複製代碼

 

轉自:張果老師 原文地址:http://www.cnblogs.com/best/archive/2011/07/30/2122088.html框架

相關文章
相關標籤/搜索