开局一张图,在 System.IO 下的 FileSystemWatcher 常用于监视文件系统的变更,当文件系统中的文件或者文件夹被修改会自动触发相应的回调事件。

为了能够了解 FileSystemWatcher 是怎么运作的,你可以指定一个被监视的文件夹,当被监视的文件夹修改后,大概会触发如下的一些事件。

Changed: 当文件或者文件夹已经完成修改时触发此事件
Created:当文件或者文件夹已经成功创建触发此事件
Deleted:当文件或者文件夹已经成功删除触发此事件
Error:当变更的过程中发生错误触发此事件。
Renamed:当文件或者文件夹已经成功被重命名时触发此事件
创建一个简单的 file 监视
接下来我们在 Visual Studio 中创建一个 Console 程序,用来了解如何进行文件监视,不过建议把 Console 部署成 Windows Service,这样方便在系统中常驻监控,一旦被监视的路径发生变更就会自动发出通知事件。

该说的都说了,接下来一起研究代码吧。

static void Main(string[] args)
{string path = @"D:\IDG";MonitorDirectory(path);Console.ReadKey();
}

下面的代码片段展示了 MonitorDirectory 方法的内部逻辑,这个方法可用于监视指定的文件夹并且当文件夹变更时触发事件,可以看到文件夹路径是通过参数传进去的。

private static void MonitorDirectory(string path)
{FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();fileSystemWatcher.Path = path;fileSystemWatcher.Created += FileSystemWatcher_Created;fileSystemWatcher.Renamed += FileSystemWatcher_Renamed;fileSystemWatcher.Deleted += FileSystemWatcher_Deleted;fileSystemWatcher.EnableRaisingEvents = true;
}

可以着重了解一下上面的 event 是如何被灌入的,而且我还写了一句 fileSystemWatcher.EnableRaisingEvents = true, 这是什么意思呢?表示当前的路径正式开始被监控,一旦监控的路径出现变更,FileSystemWatcher 中的指定事件将会被触发。

扫一下上面定义的各个 event 事件,分别都定义了该事件的处理函数,比如说:FileSystemWatcher_Created,FileSystemWatcher_Renamed,FileSystemWatcher_Deleted ,显而易见触发某一个事件就会触发它的事件处理函数,对吧,具体代码如下:

private static void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{Console.WriteLine("File created: {0}", e.Name);
}private static void FileSystemWatcher_Renamed(object sender, FileSystemEventArgs e)
{Console.WriteLine("File renamed: {0}", e.Name);
}private static void FileSystemWatcher_Deleted(object sender, FileSystemEventArgs e)
{Console.WriteLine("File deleted: {0}", e.Name);
}

下面是完整的可供参考的代码清单。

using System;using System.IO;namespace IDGFileSystemWatcher
{class Program{static void Main(string[] args){string path = @"D:\IDG";MonitorDirectory(path);Console.ReadKey();}private static void MonitorDirectory(string path){FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();fileSystemWatcher.Path = path;fileSystemWatcher.Created += FileSystemWatcher_Created;fileSystemWatcher.Renamed += FileSystemWatcher_Renamed;fileSystemWatcher.Deleted += FileSystemWatcher_Deleted;fileSystemWatcher.EnableRaisingEvents = true;}private static void FileSystemWatcher_Created(object sender, FileSystemEventArgs e){Console.WriteLine("File created: {0}", e.Name);}private static void FileSystemWatcher_Renamed(object sender, FileSystemEventArgs e){Console.WriteLine("File renamed: {0}", e.Name);}private static void FileSystemWatcher_Deleted(object sender, FileSystemEventArgs e){Console.WriteLine("File deleted: {0}", e.Name);}}
}

假设 IDG 文件夹是在 E 盘内,接下来把 Console 运行起来,然后在 IDG 文件夹内创建一个新文件,不出意外的话,你会观察到这个c#教程新建的文件名将会出现在 控制台 上,说明 FileSystemWatcher_Created 被成功触发,参考下图:

译文链接:https://www.infoworld.com/article/3185447/how-to-work-with-filesystemwatcher-in-c.html

到此这篇关于C#中FileSystemWatcher使用教程的文章就介绍到这了,更多相关C# FileSystemWatcher使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持

C#中FileSystemWatcher的使用教程相关推荐

  1. 详解Linux交互式shell脚本中创建对话框实例教程

    详解Linux交互式shell脚本中创建对话框实例教程 本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一 ...

  2. mysql数据库管理文件_数据库管理中文件的使用教程

    摘要:这篇MySQL栏目下的"数据库管理中文件的使用教程",介绍的技术点是"数据库管理.使用教程.数据库.的使用.文件.管理",希望对大家开发技术学习和问题解决 ...

  3. linux改英语环境,CentOS6.8中/英文环境切换教程图解

    一.前言 对于不习惯英文的人可能想将系统由英文转成中文:而对于考虑客户端如果没正确配置,中文目录可能显示为乱码的人则可能宁愿将系统由中文转成英文. 中文切换为英文,实际就是将LANG的值由zh_CN- ...

  4. 【转】正则表达式简介及在C++11中的简单使用教程

    [转]正则表达式简介及在C++11中的简单使用教程 正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达 ...

  5. C#中lock死锁实例教程

    C#中lock死锁实例教程 http://www.jb51.net/article/54309.htm posted on 2016-10-24 23:00 时空观察者9号 阅读(...) 评论(.. ...

  6. python可以在excel中应用吗,python怎样在excel中应用?-Python教程

    python正在excel中使用的办法:起首[return sorted(s)]正在内陆建设一个目次,并保留这个代码并定名为[Methods.py]:而后关上Excel,填写一些数据以便提供pytho ...

  7. Ice-3.5.1在CentOS 6.5系统中的编译配置教程

    Ice-3.5.1在CentOS 6.5系统中的编译配置教程 1 操作系统 CentOS release 6.5 (Final)  x86_64 系统. 2 源码包下载 Ice-3.5.1.zip 下 ...

  8. 电脑小米路由器设置虚拟服务器,小米路由器在Win7系统中设置网络映射教程

    小米路由器怎么在Win7系统中设置网络映射?小米路由器,自带有一个文件存储芯片,用于存储用户使用小米路由器下载的各类文件(包括电影.音乐等文件),如果需要在计算机中看到小米路由器的文件夹,则需要将小米 ...

  9. python函数自定义教程_Python中自定义函数的教程

    在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 我们以自定义一个求绝对值的my_abs函数 ...

最新文章

  1. win10安装程序无法将配置为在此计算机,Win10安装会遇到的问题汇总及解决方法...
  2. HBase学习总结(2):HBase介绍及其基本操作
  3. 基于supersocket、C#对JT808协议进行解析构建gps监控平台服务端
  4. tsinsen A1067. Fibonacci数列整除问题 dp
  5. 软件工程--第六周学习进度
  6. 常见web漏洞验证攻略(萌新入坑必备!)
  7. php tp 模板assign,thinkphp中怎么让assign在另一个模板里使用呢?
  8. hashmap clone_Java HashMap clone()方法与示例
  9. 【Java】京东面试:说说MySQL的架构体系
  10. Java 算法 数列
  11. dojo调用php,dojo学习第一天 Tab选项卡 实现_dojo
  12. CentOS 搭建pure-ftpd
  13. php微信定位功能,JavaScript微信定位功能实现方法
  14. python获取软件内数据_三种 Python 网络内容抓取工具与爬虫
  15. 表单复选框按钮全选-取消全选小案例
  16. 微信小程序登录流程理解
  17. ubuntu双系统修改启动菜单
  18. 倾向值匹配法的概述和应用+倾向值分析:统计方法与应用
  19. 7-2 你今天刷快手了吗
  20. Android端阿里云实人认证

热门文章

  1. 75. SAP ABAP 一个有用的程序正确性辅助工具,Checkpoint group 的使用方法介绍
  2. 未安装TCP/IP网络传输
  3. 某厂大牛花一周整的Java八股文面试题,小白学了也能快速进大厂
  4. PrestaShop二次开发-插件|支付|模板|跳转|功能|模块|外贸信用卡-2
  5. 6-2. 实战项目:足球运动员分析
  6. Android之getSharedPreferences与getDefaultSharedPreferences的区别
  7. form表单基本练习
  8. 华为Mate40国内版价格揭晓 售价4999元起
  9. 如何编写 Runkeeper 一样的 app(1)
  10. Win64位操作系统无法运行暗黑2战网D2GS的解决办法