.NET中监听文件夹最常用FileSystemWatcher类,位于System.IO命名空间,可监控指定目录的文件或子目录的创建、删除、修改和重命名操作。1. 基本用法:通过设置Path属性指定监听路径,Filter过滤文件类型,IncludeSubdirectories决定是否监听子目录,NotifyFilter定义监听事件类型,并绑定Changed、Created、Deleted、Renamed等事件处理程序,最后启用EnableRaisingEvents开始监听。2. 注意事项:需确保监听路径存在且程序有访问权限;避免因文本编辑器频繁保存导致事件触发过多,建议加入防抖机制;大量文件变动可能引发缓冲区溢出,可通过增大InternalBufferSize缓解(默认8KB,最大64KB);网络路径监听不稳定,推荐本地部署。3. 高级技巧:使用Dictionary结合Timer实现延迟去重处理,防止短时间内重复执行,例如每个文件在最后一次修改2秒后才触发实际逻辑,适用于日志写入或文件上传场景。合理配置下,FileSystemWatcher可稳定用于生产环境。
.NET 中实现对文件夹的监听,最常用的方式是使用 FileSystemWatcher 类。它位于 System.IO 命名空间下,能够监控指定目录中的文件或子目录的创建、删除、修改、重命名等操作。
下面是一个简单的示例,展示如何监听某个文件夹的变更:
using System;
using System.IO;
class Program
{
static void Main()
{
// 创建 FileSystemWatcher 实例
using (var watcher = new FileSystemWatcher())
{
watcher.Path = @"C:\example"; // 要监听的文件夹路径
// 可选:监听哪些类型的文件(如 *.txt)
watcher.Filter = "*.*";
// 监听子目录
watcher.IncludeSubdirectories = true;
// 设置要监听的事件类型
watcher.NotifyFilter = NotifyFilters.LastWrite
| NotifyFilters.FileName
| NotifyFilters.DirectoryName;
// 绑定事件处理程序
watcher.Changed += OnChanged;
watcher.Created += OnCreated;
watcher.Deleted += OnDeleted;
watcher.Renamed += OnRenamed;
// 开始监听
watcher.EnableRaisingEvents = true;
Console.WriteLine("正在监听 C:\\example 目录,请按 Enter 键退出...");
Console.ReadLine();
}
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine($"文件 {e.FullPath} 被修改 ({e.ChangeType})");
}
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}");
}
}
虽然 FileSystemWatcher 使用简单,但实际使用中需要注意以下几点:
为避免短时间内重复触发,可以加一个简单的延迟去重机制:
private static readonly Dictionary_pendingChanges = new(); private static void OnChanged(object source, FileSystemEventArgs e) { if (_pendingChanges.TryGetValue(e.FullPath, out var timer)) { timer.Dispose(); } _pendingChanges[e.FullPath] = new Timer(DoActualProcessing, e.FullPath, 2000, Timeout.Infinite); } private static void DoActualProcessing(object state) { string path = (string)state; Console.WriteLine($"处理文件变更: {path}"); _pendingChanges.Remove(path); }
这样可以确保每个文件在最后一次修改后 2 秒再执行具体逻辑,适合日志写入、文件上传等场景。
基本上就这些。FileSystemWatcher 是 .NET 中监听文件夹变化的标准方式,合理配置后可稳定用于生产环境。
# ai
# 常见问题
# .net
# 本地部署
# 命名空间
# Filter
# 事件
# 异步
# 时间内
# 可通过
# 不稳定
# 绑定
# 编辑器
# 最常用
# 防抖
# 重命名
# 文件上传
# 是一个
相关文章:
建站之星伪静态规则如何正确配置?
ppt制作免费网站有哪些,ppt模板免费下载网站?
宝塔建站无法访问?如何排查配置与端口问题?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何选择香港主机高效搭建外贸独立站?
,如何利用word制作宣传手册?
已有域名能否直接搭建网站?
如何通过虚拟机搭建网站?详细步骤解析
如何快速辨别茅台真假?关键步骤解析
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
C#如何在一个XML文件中查找并替换文本内容
如何通过老薛主机一键快速建站?
如何在宝塔面板创建新站点?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何在橙子建站上传落地页?操作指南详解
如何在腾讯云服务器快速搭建个人网站?
如何在万网ECS上快速搭建专属网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何获取PHP WAP自助建站系统源码?
定制建站哪家更专业可靠?推荐榜单揭晓
建站之星如何一键生成手机站?
网站制作报价单模板图片,小松挖机官方网站报价?
如何通过cPanel快速搭建网站?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
网站代码制作软件有哪些,如何生成自己网站的代码?
如何自定义建站之星模板颜色并下载新样式?
如何确认建站备案号应放置的具体位置?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
高端云建站费用究竟需要多少预算?
建站之星代理平台如何选择最佳方案?
湖北网站制作公司有哪些,湖北清能集团官网?
javascript基本数据类型及类型检测常用方法小结
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
建站之星代理如何获取技术支持?
高性价比服务器租赁——企业级配置与24小时运维服务
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
如何在橙子建站中快速调整背景颜色?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
javascript中的try catch异常捕获机制用法分析
网站制作费用多少钱,一个网站的运营,需要哪些费用?
建站之星如何保障用户数据免受黑客入侵?
大型企业网站制作流程,做网站需要注册公司吗?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站10G流量真的够用吗?如何应对访问高峰?
香港网站服务器数量如何影响SEO优化效果?
如何解决ASP生成WAP建站中文乱码问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。