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

发布时间 - 2026-01-11 02:37:41    点击率:

本文实例讲述了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#程序设计有所帮助。


# C#  # FileSystemWatcher  # 文件监控  # C#中FileSystemWatcher类实现监控文件夹  # C#利用FileSystemWatcher实时监控文件的增加  # 修改  # 重命名和删除  # C# FileSystemWatcher 在监控文件夹和文件时的使用方法  # C#采用FileSystemWatcher实现监视磁盘文件变更的方法  # c#使用filesystemwatcher实时监控文件目录的添加和删除  # c#使用filesystemwatcher监视文件系统的变化  # C#通过FileSystemWatcher监听文件的实战技巧  # 就会  # 重命名  # 设置为  # 若要  # 文本文件  # 或删除  # 程序设计  # 可以使用  # 创建一个  # 文件系统  # 应将  # 相关内容  # 还可以  # 句柄  # 遍历  # 感兴趣  # 数据结构  # 给大家  # 如果没有  # 并对 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: C#如何调用原生C++ COM对象详解  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何在IIS中新建站点并配置端口与物理路径?  简单实现Android文件上传  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  如何基于云服务器快速搭建个人网站?  如何利用DOS批处理实现定时关机操作详解  深圳网站制作的公司有哪些,dido官方网站?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  如何确保西部建站助手FTP传输的安全性?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Laravel如何实现API速率限制?(Rate Limiting教程)  *服务器网站为何频现安全漏洞?  Laravel如何记录自定义日志?(Log频道配置)  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  linux写shell需要注意的问题(必看)  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  网站制作壁纸教程视频,电脑壁纸网站?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  如何在IIS中新建站点并配置端口与IP地址?  如何用AWS免费套餐快速搭建高效网站?  中国移动官方网站首页入口 中国移动官网网页登录  详解vue.js组件化开发实践  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  如何快速生成专业多端适配建站电话?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  nginx修改上传文件大小限制的方法  香港服务器选型指南:免备案配置与高效建站方案解析  怎么用AI帮你为初创公司进行市场定位分析?  javascript基于原型链的继承及call和apply函数用法分析  Python文件异常处理策略_健壮性说明【指导】  如何用免费手机建站系统零基础打造专业网站?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  JavaScript如何实现错误处理_try...catch如何捕获异常?  如何彻底删除建站之星生成的Banner?  Python制作简易注册登录系统  如何用5美元大硬盘VPS安全高效搭建个人网站?  Laravel Session怎么存储_Laravel Session驱动配置详解  高端智能建站公司优选:品牌定制与SEO优化一站式服务  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程