C# 同时监控多个文件夹内容变更

在C#中,若要同时监控多个文件夹的内容变更,可以使用System.IO.FileSystemWatcher类来实现。以下是一个简化的示例,展示了如何创建一个FileSystemWatcher实例并对多个文件夹进行监控:

1using System;
2using System.IO;
3
4public class FolderMonitor
5{
6    private List<FileSystemWatcher> watchers = new List<FileSystemWatcher>();
7
8    public void StartMonitoring(string[] directories)
9    {
10        foreach (var directory in directories)
11        {
12            var watcher = new FileSystemWatcher(directory);
13
14            // 设置需要监控的更改类型
15            watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
16
17            // 指定事件处理程序
18            watcher.Created += OnChanged;
19            watcher.Changed += OnChanged;
20            watcher.Deleted += OnChanged;
21            watcher.Renamed += OnRenamed;
22
23            // 启动监控
24            watcher.EnableRaisingEvents = true;
25
26            // 将此观察者添加到列表中,以便后续管理
27            watchers.Add(watcher);
28        }
29    }
30
31    private void OnChanged(object source, FileSystemEventArgs e)
32    {
33        var watcher = (FileSystemWatcher)source;
34        Console.WriteLine($"在文件夹'{watcher.Path}'中检测到{e.ChangeType}事件: 文件名 '{e.FullPath}'");
35        
36        // 在此处添加处理文件变更的逻辑
37    }
38
39    private void OnRenamed(object source, RenamedEventArgs e)
40    {
41        var watcher = (FileSystemWatcher)source;
42        Console.WriteLine($"在文件夹'{watcher.Path}'中检测到重命名事件: 旧文件名 '{e.OldFullPath}', 新文件名 '{e.FullPath}'");
43
44        // 在此处添加处理文件重命名的逻辑
45    }
46
47    public void StopMonitoring()
48    {
49        foreach (var watcher in watchers)
50        {
51            watcher.EnableRaisingEvents = false;
52            watcher.Dispose();
53        }
54        watchers.Clear();
55    }
56}
57
58// 使用示例:
59var monitor = new FolderMonitor();
60monitor.StartMonitoring(new[] { @"C:\Folder1", @"C:\Folder2", @"C:\Folder3" });
61
62// ...等待一段时间...
63
64monitor.StopMonitoring();

我们创建了一个FolderMonitor类,它维护了一个FileSystemWatcher对象的列表。在StartMonitoring方法中,我们遍历需要监控的文件夹数组,并为每个文件夹创建一个新的FileSystemWatcher实例。设置好需要监控的更改类型,并为各个事件(如创建、修改、删除和重命名)注册事件处理程序。

当需要停止监控时,调用StopMonitoring方法,它会遍历所有观察者并停止事件通知,然后释放资源。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晨曦_子画

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

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

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

打赏作者

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

抵扣说明:

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

余额充值