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

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

方法

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

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

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

代码:

①定义一个全局变量Watch

FileSystemWatcher Watch;

②初始化该全局变量

            Watch = new FileSystemWatcher();

            Watch.Path = @"C:\Users\RAPOO\Desktop\123";
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

FileSystemWatcher监听文件是否有被修改的更多相关文章

  1. 使用FileSystemWatcher监听文件状态

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月2日. 一.FileSystemWatcher类型介绍 在.NET中使用 FileSystemWatcher 类型可以进行监视指定 ...

  2. C# FileSystemWatcher监听文件事件

    现有一个需求如下:监控某个目录中的文件修改,创建,删除等信息,并记录下来. 这里用到FileSystemWatcher类.由于考虑到文件的写入量会很频率,所以考虑先将监听到的消息记录到内存中. 监听部 ...

  3. FileSystemWatcher监听文件事件

    现有一个需求如下:监控某个目录中的文件修改,创建,删除等信息,并记录下来. 这里用到FileSystemWatcher类.由于考虑到文件的写入量会很频率,所以考虑先将监听到的消息记录到内存中. 监听部 ...

  4. 如何使用NodeJs来监听文件变化

    1.前言 在我们调试修改代码的时候,每修改一次代码,哪怕只是很小的修改,我们都需要手动重新build文件,然后再运行代码,看修改的效果,这样的效率特别低,对于开发者来说简直不能忍. 2.构建自动编译工 ...

  5. c# 监听文件夹动作

    static FileSystemWatcher watcher = new FileSystemWatcher(); /// <summary>        /// 初始化监听     ...

  6. 利用Node的chokidar 监听文件改变的文件。

    最近维护一个项目.每次改完东西,都要上传到服务器.然后有时候就忘记一些东西,于是就想有没有可以方法能监听文件的改变.然后我再利用程序把更改的文件一键上传到服务器. 于是就找到了nodejs 的chok ...

  7. SpringMVC 监听文件上传进度

    Spring MVC 监听文件上传进度 具体实现分三个步骤: 接管CommonsMultipartResolver,重写针对文件上传的请求. 在第一步中写入监听,以获取上传进度. 修改上传部分的配置文 ...

  8. node.js监听文件变化

    前言 随着前端技术的飞速发展,前端开发也从原始的刀耕火种,向着工程化效率化的方向发展.在各种开发框架之外,打包编译等技术也是层出不穷,开发体验也是越来越好.例如HMR,让我们的更新可以即时可见,告别了 ...

  9. Java NIO.2 使用Path接口来监听文件、文件夹变化

    Java7对NIO进行了大的改进,新增了许多功能: 对文件系统的访问提供了全面的支持 提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的Ja ...

随机推荐

  1. 《C++ Primer Plus》第4章 学习笔记

    数组.结构和指针是C++的3中符合类型.数组可以在一个数据对象中存储多个同种类型的值.通过使用索引或下标,可以访问数组中各个元素.结构可以将多个不同类型的值存储在同一个数据对象中,可以使用成员关系运算 ...

  2. Java四种会话跟踪技术

    1.cookie:2.session:3.隐藏表单域:4.URL重写

  3. Swift 实现单例模式Singleton pattern的三种方法

    转自:点击打开链接 From my short experience with Swift there are three approaches to implement the Singleton ...

  4. iOS json解析中包含“\n”等解析出错

    文题算是解决了,把特殊字符替换一下:-(NSString *)JSONString:(NSString *)aString {    NSMutableString *s = [NSMutableSt ...

  5. mysql数据的导入与导出

    参考:http://blog.sina.com.cn/s/blog_81b2b2a1010188q0.html  http://blog.csdn.net/xin_yu_xin/article/det ...

  6. Maven的安装配置及初次创建项目与java单元测试工具JUnit

    Maven  安装     1.把maven安装包解压到某个位置     2.配置M2_HOME环境变量指向这个位置 3.在path环境变量中添加;%M2_HOME%\bin 配置镜像 国内的阿里云镜 ...

  7. Bootstrap初学基础总结

    Bootstrap 1>.Web UI 框架 可以帮助菜鸟程序员 ,迅速简便的搭建起专业级界面效果 2>如何快速掌握利用框架 1.框架的整合和搭建,让框架能够正常跑起来 2.通过复制粘贴文 ...

  8. CodeForces 24B F1 Champions(排序)

    B. F1 Champions time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  9. SignalR循序渐进(二)泛型Hub

    接上一篇,文章末尾抛出了2个问题: 能不能让客户端声明一个强类型的方法列表呢?这样首先不容易写错. 同样的,能不能让服务端声明一个强类型的方法列表给客户端调用呢? 如果要让客户端的方法以强类型出现在服 ...

  10. swift中类与结构体

    写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...