C# FileSystemWatcher 实时监控文件的增加、修改、重命名和删除实例

       好多时候,我们都需要知道某些目录下的文件什么时候被修改、删除过等,如果能用miniFilter驱动过滤来做的话当然是最好不过了,这是内核级别的,当然也比较复杂。如果只是简单的记录就没必要用驱动过滤级别的来做了,用FileSystemWatcher来做就要简单得多。

       FileSystemWatcher组件可以监视文件系统,并在文件系统发生改变时作出反应。FileSystemWatcher 常用于文件系统变更的监控,当被监视的文件夹目录被创建、修改、重命名或删除时,会触发以下事件:

  1. Created: 当新建文件或者文件夹
  2. Changed:当文件或者文件夹已经完成修改
  3. Renamed:当文件或者文件夹完成重命名
  4. Deleted:当文件或者文件夹被删除
  5. Error:当变更过程发生错误

下面我们一起来完成一个文件监控实例。

一、实例化FileSystemWatcher类,并注册监听事件           

             //创建一个FileSystemWatcher,并设置其属性
            FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(); 
            //设置监控的路径
            fileSystemWatcher.Path = “监控路径”;
            //是否监控指定路径中的子目录
            fileSystemWatcher.IncludeSubdirectories = true;
            //启用
            fileSystemWatcher.EnableRaisingEvents = true;

            //注册监听事件,Created、Changed、Deleted三个事件传递的参数是一样的,我们就用同一个方法来处理就可以了
            fileSystemWatcher.Changed += new FileSystemEventHandler(FileSystemWatcher_EventHandler);
            fileSystemWatcher.Created += new FileSystemEventHandler(FileSystemWatcher_EventHandler);
            fileSystemWatcher.Deleted += new FileSystemEventHandler(FileSystemWatcher_EventHandler);
            fileSystemWatcher.Renamed += new RenamedEventHandler(FileSystemWatcher_Renamed);
            fileSystemWatcher.Error += new ErrorEventHandler(FileSystemWatcher_Error);

二、事件处理

           FileSystemEventArgs 对象成员有:Name、OldName、ChangeType、FullPath、OldFullPath等,看名就明白是什么了,这里不做过多解释。

             //创建一个FileSystemWatcher,并设置其属性
            FileSystemWatcher fileSystemWatcher = new FileSyst

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用C#提供的FileSystemWatcher类来实现监控文件夹和里面文件的变化。以下是一个简单的示例代码: ```csharp using System; using System.IO; class Program { static void Main(string[] args) { // 创建一个新的FileSystemWatcher对象 FileSystemWatcher watcher = new FileSystemWatcher(); // 设置要监控文件夹路径 watcher.Path = @"C:\myfolder"; // 监控所有类型的文件 watcher.Filter = "*.*"; // 监控文件变化的类型 watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; // 添加事件处理程序 watcher.Changed += new FileSystemEventHandler(OnChanged); watcher.Created += new FileSystemEventHandler(OnChanged); watcher.Deleted += new FileSystemEventHandler(OnChanged); watcher.Renamed += new RenamedEventHandler(OnRenamed); // 启动监控 watcher.EnableRaisingEvents = true; Console.WriteLine("Press any key to stop monitoring..."); Console.ReadKey(); } // 处理文件变化事件 private static void OnChanged(object source, FileSystemEventArgs e) { Console.WriteLine($"File: {e.FullPath} {e.ChangeType}"); } // 处理文件命名事件 private static void OnRenamed(object source, RenamedEventArgs e) { Console.WriteLine($"File: {e.OldFullPath} renamed to {e.FullPath}"); } } ``` 这个示例代码会监控C:\myfolder文件夹中的所有文件变化,并在控制台输出变化的信息。你可以根据需要修改监控文件夹路径、要监控文件类型和要监控的变化类型,并根据需要添加其他事件处理程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xgh815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值