本文共 1589 字,大约阅读时间需要 5 分钟。
最近做项目,遇到一个需求,要求是能监控windows系统中某个文本文件的变化,一旦文件变化,要能捕获到这个事件,然后做出相应。实现起来也很简单,见下文。
演示效果如下:
当watchme.txt文件内容发生变化,程序能够检测到这个事件,捕获变化文件的路径,为后续读取文件内容做相应的逻辑处理提供前提条件。在工具箱中找到FileSystemWatcher对象,然后拖到窗体中。
选中窗体后,在右侧编辑框中选中事件(闪电图标),然后双击生成load方法。
// 窗体启动事件代码 private void Form1_Load(object sender, EventArgs e) { startMonitor();//开始监视:文件创建 }
直接贴代码好了:
// 监视函数 private void startMonitor() { String path = @"D:\demo";//需要监控文件的路径 this.fileSystemWatcher = new FileSystemWatcher(); this.fileSystemWatcher.Path = path; this.fileSystemWatcher.Filter = "*.txt";//需要监控的文件类型Filter可以包含多种类型.doc,甚至access数据库的mdb文件也可以。 this.fileSystemWatcher.Changed += new System.IO.FileSystemEventHandler(this.Changed);//这个Changed函数是要自己写的。 this.fileSystemWatcher.IncludeSubdirectories = true; this.fileSystemWatcher.SynchronizingObject = this; this.fileSystemWatcher.EnableRaisingEvents = true; }
Changed函数是你自己定义的,用于处理你捕获到这个事件后处理的逻辑。直接贴代码好了:
// 这里开始就是写你捕获到这个文件变化后,想要进行的逻辑处理 private void Changed(object sender, System.IO.FileSystemEventArgs e) { lock (this) { //这里开始就是写你捕获到这个文件变化后,想要进行的逻辑处理 //是读取文件内容,解析后,写入数据库啊,还是通过接口发送啊等等,看你实际需求。 MessageBox.Show(e.FullPath, "提示"); } }
一般这种监控程序都要搭配最小化托盘、开机自启等常规操作,这些做法后续有空我就补上~。
转载地址:http://zfbq.baihongyu.com/