FileSystemWatcher 文件监控
原文链接:https://www.cnblogs.com/ysmc/p/18798027
介绍
FileSystemWatcher 是一个强大的 .NET 类,它允许您监听文件系统的变化,如文件或目录的创建、删除、修改和重命名。这个类特别有用于需要实时监控文件变化的应用程序,比如自动备份工具或系统监控软件
官方文档:传送门
代码示例
惯例,直接上代码,这里需要注意的一点,文件的 Change 会被触发多次,可能会导致文件的占用,建议等待一小会,避免文件调用异常,非必须,按照时间情况调整
我这里是使用 IHostedService 去开启监控的,主要是为了可以按需开启或者停止监控
1 public class FileSystemWatcherHostedService : IHostedService 2 { 3 private readonly FileSystemWatcher _fileWatcher; 4 private readonly string _path = "需要监控的目录"; 5 6 public FileSystemWatcherHostedService() 7 { 8 _fileWatcher = new FileSystemWatcher(_path) 9 { 10 Filter = "*.json", //监控的文件类型 11 InternalBufferSize = 65536, //缓冲区大小 12 IncludeSubdirectories = true // 包括子文件夹 13 }; 14 } 15 16 public async Task StartAsync(CancellationToken cancellationToken) 17 { 18 _fileWatcher.Changed += OnFileChanged; //文件修改事件 19 _fileWatcher.EnableRaisingEvents = true; //启用事件 20 await Task.CompletedTask; 21 } 22 23 private void OnFileChanged(object sender, FileSystemEventArgs e) 24 { 25 Thread.Sleep(100); //等待文件写入完成,避免读取到不完整的文件,或者文件被占用,可以根据实际情况调整 26 //处理文件修改事件 27 } 28 29 public Task StopAsync(CancellationToken cancellationToken) 30 { 31 _fileWatcher.EnableRaisingEvents = false; //停止事件 32 _fileWatcher.Dispose(); //释放资源 33 34 return Task.CompletedTask; 35 } 36 }
Change 多次触发处理
未完待续......
本文来自博客园,作者:一事冇诚,转载请注明原文链接:https://www.cnblogs.com/ysmc/p/18798027