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

    【实例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.      }
    50. 源文地址:http://www.escdns.com/Html/9961.html
  • 相关阅读:
    ThinkPHP框架知识(比较全的知识)
    利用smarty模板(登录、有关信息操作等功能)
    从零开始学习Node.js例子七 发送HTTP客户端请求并显示响应结果
    从零开始学习Node.js例子六 EventEmitter发送和接收事件
    从零开始学习Node.js例子五 服务器监听
    从零开始学习Node.js例子四 多页面实现数学运算 续二(client端和server端)
    从零开始学习Node.js例子四 多页面实现数学运算 续一(使用connect和express框架)
    从零开始学习Node.js例子四 多页面实现数学运算
    从零开始学习Node.js例子三 图片上传和显示
    从零开始学习Node.js例子二 文本提交与显示
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2729842.html
Copyright © 2020-2023  润新知