zoukankan      html  css  js  c++  java
  • FileSystemWatcher监听文件是否有被修改

    作用:监听文件系统更改通知,并在目录或目录中的文件更改时引发事件。

    需求:监听特定文件是否修改,然后做出相应的操作。

    方法

    ①利用一个线程,一直去查找该指定的文件是否有被修改,如果修改则操作特定步骤,否则继续查询。

    缺点:占用CPU,要一直循环查找。

    ②利用.net里面的FileSystemWatcher来监听文件是否有被修改,如果有,则操作特定步骤。

    代码:

    ①定义一个全局变量Watch

    FileSystemWatcher Watch;

    ②初始化该全局变量

                Watch = new FileSystemWatcher();
    
                Watch.Path = @"C:UsersRAPOODesktop123";
                Watch.Filter = "modlist.mod";
                Watch.NotifyFilter = NotifyFilters.LastWrite;
                Watch.IncludeSubdirectories = false;
    
                Watch.Changed += new FileSystemEventHandler(watch_changed);
                Watch.EnableRaisingEvents = true;

    ③相应修改事件

            private void watch_changed(object source, FileSystemEventArgs e)
            {
                if (Watch != null)
                {
                    try
                    {
                        Watch.EnableRaisingEvents = false;
    
                        MessageBox.Show("改变!!!");
                    }
                    finally
                    {
                        Watch.EnableRaisingEvents = true;
                    }
                }
            }

    注意

    1、代码只添加修改事件,还有重命名、删除、新增事件。

    2、在修改事件里面,需要将事件监控先重置为false,待执行结束后再修改为true。目的是解决修改事件执行两次的BUG。

    下图为MSDN上注释。

    参考链接

    1、https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

    2、http://qa.helplib.com/132321

  • 相关阅读:
    Perl 简介(适合对 C 语言有点认识的读者)
    ASP.NET中的随机密码生成
    office2003下的EXCEL中英文图表名的对应
    css布局定位系列 (转)
    使用.Net访问Office编程接口
    在.NET 2.0 中发送Email
    asp .net 发邮件(带附件)测试可用
    ASP.NET图象处理详解
    DateTable全解
    带线的无限级下拉树列表
  • 原文地址:https://www.cnblogs.com/wangyblzu/p/5979507.html
Copyright © 2011-2022 走看看