FileSystemWatcher是.NET中用于监听文件夹变化的高效类,通过设置Path、NotifyFilter等属性并绑定事件可监控文件的创建、修改、删除和重命名操作。需注意配置IncludeSubdirectories以递归监听子目录,合理调整InternalBufferSize防止事件丢失,并处理重复触发、文件占用等问题。封装为服务类便于复用,适用于日志监控、自动备份等场景。

要实现对一个文件夹的监听,.NET 提供了内置的 FileSystemWatcher 类,可以高效地监控目录中的文件创建、删除、修改和重命名等操作。以下是具体实现方案和注意事项。
通过 FileSystemWatcher 可以监听指定路径下的文件变化。基本用法如下:
var watcher = new FileSystemWatcher();
watcher.Path = @"C:\YourFolder"; // 监听的目录
watcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
watcher.Filter = "*.*"; // 监听所有文件
// 绑定事件
watcher.Changed += OnChanged;
watcher.Created += OnCreated;
watcher.Deleted += OnDeleted;
watcher.Renamed += OnRenamed;
// 开始监听
watcher.EnableRaisingEvents = true;
其中事件处理函数示例:
private static void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine($"文件 {e.FullPath} 被修改");
}
private static void OnCreated(object source, FileSystemEventArgs e)
{
Console.WriteLine($"文件 {e.FullPath} 被创建");
}
private static void OnDeleted(object source, FileSystemEventArgs e)
{
Console.WriteLine($"文件 {e.FullPath} 被删除");
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
Console.WriteLine($"文件从 {e.OldFullPath} 重命名为 {e.FullPath}");
}
合理设置参数可避免误报或漏报:
实际使用中可能遇到的问题及应对方式:
将监听逻辑封装成服务类更便于复用:
public class FolderMonitor : IDisposable
{
private FileSystemWatcher _watcher;
public void Start(string path)
{
_watcher = new FileSystemWatcher(path)
{
IncludeSubdirectories = true,
NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite,
Filter = "*.*"
};
_watcher.Changed += (s, e) => Console.WriteLine($"修改: {e.FullPath}");
_watcher.Created += (s, e) => Console.WriteLine($"创建: {e.FullPath}");
_watcher.EnableRaisingEvents = true;
}
public void Dispose()
{
_watcher?.Dispose();
}
}
使用时:
using var monitor = new FolderMonitor(); monitor.Start(@"C:\Test"); Console.ReadLine(); // 保持运行
以上就是.NET怎么实现对一个文件夹的监听_文件夹监听实现方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号