FileSystemWatcher 文件監控
原文鏈接:http://www.rzrgm.cn/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 多次觸發處理
未完待續......
本文來自博客園,作者:一事冇誠,轉載請注明原文鏈接:http://www.rzrgm.cn/ysmc/p/18798027

浙公網安備 33010602011771號