FileSystemWatcher

系统 1851 0

可以使用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时间的更改,以及目录中文本文件的创建、删除或重命名。如果文件被更改、创建或删除,则文件的路径就会被输出到控制台。当一个文件被重命名时,旧的和新的路径都被输出到控制台。

【实例7-7】  使用FileSystemWatche组件来监视运行时指定的目录。

    
  1. using System;  
  2. using System.IO;  
  3. public   class  watcher  
  4. {  
  5.      public   static   void  Main(string[] args)  
  6.     {  
  7.          //如果没有指定目录,则退出程序  
  8.          if (args.Length!= 1 )  
  9.         {  
  10.              //显示调用程序的正确方法  
  11.             Console.WriteLine( "usage:Watcher.exe(directory)" );  
  12.              return ;  
  13.         }  
  14.          //创建一个新的FileSystemWatcher并设置其属性  
  15.         FileSystemWatcher watcher= new  FileSystemWatcher();  
  16.         watcher.Path=args[O];  
  17.          /*监视LastAcceSS和LastWrite时间的更改以及文件或目录的重命名*/  
  18.         watcher.NotifyFilter=NotifyFilters.LastAccess | NotifyFilters.LastWrite |  
  19.             NotifyFilters.FileName | NotifyFilters.DirectoryName;  
  20.          //只监视文本文件  
  21.         watcher.Filter= "*.txt" ;  
  22.          //添加事件句柄  
  23.          //当由FileSystemWatcher所指定的路径中的文件或目录的  
  24.          //大小、系统属性、最后写时间、最后访问时间或安全权限  
  25.          //发生更改时,更改事件就会发生  
  26.         watcher.Changed += new  FileSystemEventHandler(OnChanged);  
  27.          //由FileSystemWatcher所指定的路径中文件或目录被创建时,创建事件就会发生  
  28.         watcher.Created += new  FileSystemEventHandler(OnChanged);  
  29.          //当由FileSystemWatcher所指定的路径中文件或目录被删除时,删除事件就会发生  
  30.         watcher.Deleted += new  FileSystemEventHandler(OnChanged) ;  
  31.          //当由FileSystemWatcher所指定的路径中文件或目录被重命名时,重命名事件就会发生  
  32.         watcher.Renamed += new  RenamedEventHandler(OnRenamed);  
  33.          //开始监视  
  34.         watcher.EnableRaisingEvents= true ;  
  35.          //等待用户退出程序  
  36.         Console.WriteLine( "Press\'q\' to quit the sample." );  
  37.          while (Console.Read()!= 'q' );  
  38.     }  
  39.      //定义事件处理程序  
  40.      public   static   void  OnChanged(object sender,FileSystemEventArgs e)  
  41.     {  
  42.      //指定当文件被更改、创建或删除时要做的事  
  43.         Console.WriteLine( "file:" +e.FullPath+ "" +e.ChangeType);  
  44.     }  
  45.      public   static   void  OnRenamed(object sender,RenamedEventArgs e)  
  46.     {  
  47.      //指定当文件被重命名时发生的动作  
  48.         Console.WriteLine( "Fi]e:{0} renamed to{1}" ,e.OldFullPath,e.FullPath);  
  49.     }  

FileSystemWatcher


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论