首頁 >後端開發 >C#.Net教程 >C#如何利用FileSystemWatcher控制項實現的檔案監控的具體範例分享

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

黄舟
黄舟原創
2017-08-07 13:11:242218瀏覽

這篇文章主要介紹了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);
  }
}

以上是C#如何利用FileSystemWatcher控制項實現的檔案監控的具體範例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn