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组件来监视运行时指定的目录:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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#程序设计有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值