C#如何利用FileSystemWatcher控制項實現的檔案監控的具體樣本分享

來源:互聯網
上載者:User
這篇文章主要介紹了C#使用FileSystemWatcher控制項實現的檔案監控功能,結合執行個體形式分析了C# FileSystemWatcher組件的功能及監控檔案更改情況的具體提示,需要的朋友可以參考下

本文執行個體講述了C#使用FileSystemWatcher控制項實現的檔案監控功能。分享給大家供大家參考,具體如下:

FileSystemWatcher

可以使用FileSystemWatcher組件監視檔案系統,並對檔案系統的改變作出反應。通過使用FileSystemWatcher組件,在特定的檔案或目錄被建立、修改或刪除時,可以快速和便捷地啟動商務程序。

例如,如果一組使用者在合作處理一個儲存在伺服器共用目錄下的文檔時,可以使用FileSystemWatcher組件編寫應用程式來監視對共用目錄的更改情況。當檢測到更改時,該組件可以運行處理過程,通過電子郵件通知每個使用者。

可以配置組件來監視整個目錄及其內容,或特定目錄下一個特定的檔案或一組檔案。若要監視所有檔案中的更改,應將Filter屬性設定為空白字串("");若要監視特定的檔案,應將Filter屬性設定為該檔案的檔案名稱(例如,若要監視檔案MyDoc.txt中的更改,將Filter屬性設定為"MyDoc.txt");也可以監視特定檔案類型中的更改,例如若要監視文字檔中的更改,將Fillter屬性設定為"*.txt"。

【提示】不要忽略隱藏檔案。

可監視目錄或檔案中的若干種更改。例如,可監視檔案或目錄的Attributes、LastWrite的日期和時間或Size的更改。通過將
FileSystemWatcher.NotifyFilter屬性設定為NotifyFilters中的某個值,就可以實現這個目標。

還可以監視檔案或目錄的重新命名、刪除或建立。例如,若要監視文字檔的重新命名,可將Filter屬性設定為"*.txt",並調用一個WaitForChanged方法,並設定該方法中WatcherChangeTypes的值為Renamed。

下面舉例說明。建立一個FileSystemWatche組件來監視運行時指定的目錄。組件被設定用來監視LastWrite和LastAccess時間的更改,以及目錄中文字檔的建立、刪除或重新命名。如果檔案被更改、建立或刪除,則檔案的路徑就會被輸出到控制台。當一個檔案被重新命名時,舊的和新的路徑都被輸出到控制台。

執行個體 使用FileSystemWatche組件來監視運行時指定的目錄:


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;    }    //建立一個新的FileSystemWatcher並設定其屬性    FileSystemWatcher watcher=new FileSystemWatcher();    watcher.Path=args[O];    /*監視LastAcceSS和LastWrite時間的更改以及檔案或目錄的重新命名*/    watcher.NotifyFilter=NotifyFilters.LastAccess | NotifyFilters.LastWrite |           NotifyFilters.FileName | NotifyFilters.DirectoryName;    //只監視文字檔    watcher.Filter="*.txt";    //添加事件控制代碼    //當由FileSystemWatcher所指定的路徑中的檔案或目錄的    //大小、系統屬性、最後寫時間、最後訪問時間或安全許可權    //發生更改時,變更事件就會發生    watcher.Changed +=new FileSystemEventHandler(OnChanged);    //由FileSystemWatcher所指定的路徑中檔案或目錄被建立時,建立事件就會發生    watcher.Created +=new FileSystemEventHandler(OnChanged);    //當由FileSystemWatcher所指定的路徑中檔案或目錄被刪除時,刪除事件就會發生    watcher.Deleted +=new FileSystemEventHandler(OnChanged) ;    //當由FileSystemWatcher所指定的路徑中檔案或目錄被重新命名時,重新命名事件就會發生    watcher.Renamed +=new RenamedEventHandler(OnRenamed);    //開始監視    watcher.EnableRaisingEvents=true;    //等待使用者退出程式    Console.WriteLine("Press\'q\' to quit the sample.");    while(Console.Read()!='q');  }  //定義事件處理常式  public static void OnChanged(object sender,FileSystemEventArgs e)   {    //指定當檔案被更改、建立或刪除時要做的事    Console.WriteLine("file:"+e.FullPath+""+e.ChangeType);  }  public static void OnRenamed(object sender,RenamedEventArgs e)   {    //指定當檔案被重新命名時發生的動作    Console.WriteLine("Fi]e:{0} renamed to{1}",e.OldFullPath,e.FullPath);  }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.