C# winform FileSystemWatcher 监控不以*.docx 文件内容的修改。
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在C# WinForm应用程序中,您可以使用
FileSystemWatcher
类来监控特定文件夹中的文件变化。为了只监控非.docx
文件内容的修改,您可以在事件处理程序中检查文件扩展名,并根据需要执行相应操作。以下是实现这一目标的步骤和示例代码:- 首先,在您的WinForm项目中添加一个
FileSystemWatcher
实例。
private FileSystemWatcher watcher;
- 在窗体加载(例如
Form_Load
事件)中初始化FileSystemWatcher
,设置所需的属性并订阅事件。
private void Form1_Load(object sender, EventArgs e) { // 设置要监控的目录 string directoryPath = @"C:\Your\Directory\Path"; // 创建一个新的FileSystemWatcher实例 watcher = new FileSystemWatcher(directoryPath); // 设置监视的更改类型 watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size; // 只监控非.docx文件 watcher.Filter = "*.*"; // 订阅文件改变事件 watcher.Changed += OnChanged; // 启动监控 watcher.EnableRaisingEvents = true; }
- 实现
OnChanged
方法,用于处理文件更改事件。在此方法中,我们检查文件扩展名并决定是否忽略.docx
文件。
private void OnChanged(object source, FileSystemEventArgs e) { if (e.ChangeType == WatcherChangeTypes.Changed && !e.Name.EndsWith(".docx", StringComparison.OrdinalIgnoreCase)) { // 处理非.docx文件的修改,例如:读取文件内容、更新UI等 Console.WriteLine($"File {e.FullPath} has been changed and it's not a .docx file."); // 示例:读取文件内容 using (StreamReader reader = new StreamReader(e.FullPath)) { string content = reader.ReadToEnd(); Console.WriteLine("Content: " + content); } } }
- 当窗体关闭时,记得停止监控并释放资源。
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // 停止监控 watcher.EnableRaisingEvents = false; // 关闭FileSystemWatcher实例 watcher.Dispose(); }
这段代码会在指定目录下监控所有文件的修改,但仅对非
.docx
文件的修改做出反应。当检测到符合条件的文件更改时,它会输出一条消息并读取文件内容作为示例。请将directoryPath
替换为您想要监控的实际路径。注意:这个示例没有涉及到更新UI的部分,因为这取决于你的具体需求和UI设计。如果你需要在主线程上更新UI,可能需要使用
Invoke
或BeginInvoke
方法。解决 无用评论 打赏 举报 编辑记录- 首先,在您的WinForm项目中添加一个
悬赏问题
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 stm32开发clion时遇到的编译问题