C# winform FileSystemWatcher 监控不以*.docx 文件内容的修改。
6条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
在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项目中添加一个