valu 2024-04-24 17:07 采纳率: 0%
浏览 2

C# winform FileSystemWatcher 监控不以*.docx 文件内容的修改。

C# winform FileSystemWatcher 监控不以*.docx 文件内容的修改。

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-24 17:07
    关注

    引自免费微信小程序:皆我百晓生

    在C# WinForm应用程序中,您可以使用FileSystemWatcher类来监控特定文件夹中的文件变化。为了只监控非.docx文件内容的修改,您可以在事件处理程序中检查文件扩展名,并根据需要执行相应操作。以下是实现这一目标的步骤和示例代码:

    1. 首先,在您的WinForm项目中添加一个FileSystemWatcher实例。
    private FileSystemWatcher watcher;
    
    1. 在窗体加载(例如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;
    }
    
    1. 实现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);
            }
        }
    }
    
    1. 当窗体关闭时,记得停止监控并释放资源。
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        // 停止监控
        watcher.EnableRaisingEvents = false;
    
        // 关闭FileSystemWatcher实例
        watcher.Dispose();
    }
    

    这段代码会在指定目录下监控所有文件的修改,但仅对非.docx文件的修改做出反应。当检测到符合条件的文件更改时,它会输出一条消息并读取文件内容作为示例。请将directoryPath替换为您想要监控的实际路径。

    注意:这个示例没有涉及到更新UI的部分,因为这取决于你的具体需求和UI设计。如果你需要在主线程上更新UI,可能需要使用InvokeBeginInvoke方法。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月24日

悬赏问题

  • ¥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时遇到的编译问题