欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#使用FileSystemWatcher控件实现的文件监控功能示例

程序员文章站 2023-12-04 14:47:35
本文实例讲述了c#使用filesystemwatcher控件实现的文件监控功能。分享给大家供大家参考,具体如下: filesystemwatcher 可以使用files...

本文实例讲述了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#相关内容感兴趣的读者可查看本站专题:《c#文件操作常用技巧汇总》、《c#遍历算法与技巧总结》、《c#程序设计之线程使用技巧总结》、《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》及《c#面向对象程序设计入门教程

希望本文所述对大家c#程序设计有所帮助。