C# 文件监控,任何文件夹或文件修改后 ,如何立即触发监控

您所在的位置:网站首页 c文件编辑 C# 文件监控,任何文件夹或文件修改后 ,如何立即触发监控

C# 文件监控,任何文件夹或文件修改后 ,如何立即触发监控

2024-01-09 11:33| 来源: 网络整理| 查看: 265

一、场景

有时候,我们需要监控文件夹的变化,然后做出一些业务处理,这里面,最典型的例子,估计前端攻城狮老熟的,就是各种打包了。

那么在C#后端,也会遇到要监控变化的情况,像网盘等。

二、C#中的文件监控

可以用钩子函数来处理,这种会处理得让你抓狂,一可能是太多消息事件,你头都大,二估计你不是C/C++的程序员,对win32函数本身就不熟,找资料都要你老费劲了。

那么C#中的文件监控还有什么办法呢?C#庞大的类库中,提供了FileSystemWatcher类,该类可以专门用于文件夹监控,下面是该类的api定义:

三、FileSystemWatcher的功能

FileSystemWatcher可以根据您设定的文件夹进行监控,动作覆盖创建、删除、改动、重命名等。另外还可以动态地定义需要监控的文件类型,比如您只想监控rar文件、txt文件,又或者您想同时监控多种文件都可以。

四、FileSystemWatcher常用属性 Path:要监视的文件夹路径。这是文件夹(也叫目录)路径,不是具体的某一个文件的路径,无法对单个具体文件监控。Filter:筛选监控的文件类型,指该文件夹下的某种类型的文件,比如*.txt、*.rar、*.html文件。NotifyFilter:监视什么动作类型。本属性是位域,允许进行位运算的。比如可以监视修改、目录名、文件名更改、修改时间等。IncludeSubdirectories:是否监控子文件夹。即级联监控。EnableRaisingEvents:是否启动本组件。这个新手很容易出问题的地方,本属性等于是个开关。新手以为FileSystemWatcher创建一个新对象new一下,就可以使用了,不是的,new了对象之后,要记得把本属性设置为true,才是真正开始用。 五、FileSystemWatcher常用事件 Created:当创建文件夹,或者创建文件时,触发Changed:更新文件夹或者文件时触发Renamed:重命名文件夹或者文件时触发 Deleted:删除文件夹或者文件时触发  六、简单示例

上图是代码截图,源码如下:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp2 { public partial class Form1 : Form { public Form1() { FileSystemWatcher watcher = new FileSystemWatcher(@"E:\test\"); watcher.IncludeSubdirectories = true; watcher.Deleted += Watcher_Deleted; watcher.Created += Watcher_Created; watcher.Renamed += Watcher_Renamed; watcher.EnableRaisingEvents = true; } private void Watcher_Renamed(object sender, RenamedEventArgs e) { } private static void Watcher_Deleted(object sender, FileSystemEventArgs e) { } private static void Watcher_Created(object sender, FileSystemEventArgs e) { } } }

运行效果,当您在E:\test进行文件夹或者文件操作时,将触发监控。

 

祝您用餐愉快。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3