如果需要知道修改文件或目录的时间,可以通过FileSystemWatcher类,这个类提供了一下应用程序可以捕获的事件,应用程序可以对事件作出响应。

使用FileSystemWatcher非常简单,首先必须设置一些属性,指定监控的位置、内容以及引发应用程序要处理事件的时间,然后给FileSystemWatcher提供定制事件处理程序的地址。当事件发生时,FileSystemWatcher就调用这些属性,然后打开FileSystemWatcher,等待事件。

1、在启用FileSystemWatcher对象之前必须设置的属性:

2、设置了属性之后,必须为4个事件Changed、Created、Deleted、Renamed编写事件处理程序。

3、设置了属性和事件后,将EnableRaisingEvents属性设置为true,就可以开始监控工作了。

示例:

建立如下窗体:

窗体属性:

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
private FileSystemWatcher watcher;
private delegate void updateTextDEL(string text);
public Form1()
{
InitializeComponent();
watcher = new FileSystemWatcher();
watcher.Deleted += watcher_Deleted;
watcher.Renamed += watcher_Renamed;
watcher.Changed += watcher_Changed;
watcher.Created += watcher_Created;
}
public void UpdateText(string text)
{
lbWatch.Text = text;
}
void watcher_Created(object sender, FileSystemEventArgs e)
{
StreamWriter sw = new StreamWriter("log.txt", true);
sw.WriteLine("File:{0} created", e.FullPath);
sw.Close();
this.BeginInvoke(new updateTextDEL(UpdateText), "created");
} void watcher_Changed(object sender, FileSystemEventArgs e)
{
StreamWriter sw = new StreamWriter("log.txt", true);
sw.WriteLine("File:{0}{1}", e.FullPath, e.ChangeType, ToString());
sw.Close();
this.BeginInvoke(new updateTextDEL(UpdateText), "changed"); } void watcher_Renamed(object sender, RenamedEventArgs e)
{
StreamWriter sw = new StreamWriter("log.txt", true);
sw.WriteLine("File:renamed from{0}to{1}", e.OldName, e.FullPath);
sw.Close();
this.BeginInvoke(new updateTextDEL(UpdateText), "renamed");
} void watcher_Deleted(object sender, FileSystemEventArgs e)
{
StreamWriter sw = new StreamWriter("log.txt", true);
sw.WriteLine("File:{0}deleted", e.FullPath);
sw.Close();
this.BeginInvoke(new updateTextDEL(UpdateText), "deleted");
} private void btnBrowser_Click(object sender, EventArgs e)
{
if(openFileDialog1.ShowDialog()!=DialogResult.Cancel)
{
txbLocatin.Text = openFileDialog1.FileName; }
} private void btnWatch_Click(object sender, EventArgs e)
{
watcher.Path = Path.GetDirectoryName(txbLocatin.Text);
watcher.Filter = Path.GetFileName(txbLocatin.Text);
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters
.Size;
lbWatch.Text = "watching" + txbLocatin.Text;
watcher.EnableRaisingEvents = true;
} }
}

c#之监控文件结构的更多相关文章

  1. Java应用程序监控JavaMelody

    JavaMelody是运行在Java Web容器中,用来监控Java内存和J服务器CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求等的执行数量,平均执行时间,错误百分 ...

  2. ASP.NET MVC 监控诊断、本地化和缓存

    这篇博客主要是针对asp.net mvc项目的一些常用的东东做一个讲解,他们分别是监控诊断.本地化和缓存.虽然前两者跟asp.net mvc看上去好像是没什么关联. 但其实如果真正需要做asp.net ...

  3. 用python 10min手写一个简易的实时内存监控系统

    简易的内存监控系统 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 文章github源地址,还可以看到具体的代码,喜欢请在原链接右上角加个star 腾讯视频链接 ...

  4. 管中窥豹——从对象的生命周期梳理JVM内存结构、GC调优、类加载、AOP编程及性能监控

    如题,本文的宗旨既是透过对象的生命周期,来梳理JVM内存结构及GC相关知识,并辅以AOP及双亲委派机制原理,学习不仅仅是海绵式的吸收学习,还需要自己去分析why,加深对技术的理解和认知,祝大家早日走上 ...

  5. [转]用python 10min手写一个简易的实时内存监控系统

    简易的内存监控系统 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 文章github源地址,还可以看到具体的代码,喜欢请在原链接右上角加个star 腾讯视频链接 ...

  6. JVM基础系列第15讲:JDK性能监控命令

    查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...

  7. JVM基础系列第5讲:字节码文件结构

    温馨提示:此篇文章长达两万字,图片50多张,内容非常多,建议收藏后再看. 前面我们说到 Java 虚拟机使用字节码实现了跨平台的愿景,无论什么系统,我们都可以使用 Java 虚拟机解释执行字节码文件. ...

  8. JDK性能监控命令

    阅读原文 查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps ...

  9. 大众点评cat监控平台搭建

    参考官方文档:https://github.com/dianping/cat/wiki/readme_server 1.数据库相关 (1)创建数据库cat,并执行以下sql创建相关表: CREATE ...

随机推荐

  1. ListView动态刷新adapter.notifyDataSetChanged()无反应

    前段时间在做一个动态刷新ListView(模拟聊天),遇到一个问题,调用notifyDataSetChanged()方法,数据源已经存在但是并没有动态刷新! 首先我们需要了解notifyDataSet ...

  2. mysql新手入门随笔3

    #求最高工资的员工信息 SELECT * FROM emp WHERE sal = (SELECT max(sal) FROM emp); #删除工资最低的员工信息 DELETE FROM emp W ...

  3. Java多线程:乐观锁、悲观锁、自旋锁

    悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据 ...

  4. WCF配置问题(配置WCF跨域)

    其它的先放一边.今天先来分享一下前段时间给公司做网站WCF服务接口的心得. 配置文件的配置问题 这里既然讨论WCF配置文件的问题,那么怎么创建的就不一一讲解了.好多博主都有提过的.所以直接分享自己开发 ...

  5. 浅谈RMQ

    RMQ是一类求区间极值的问题 有一种 \(O\left(nlogn\right)\) 的解法,用倍增实现 倍增算法 变量的定义 \(A_i\) : 原数组 \(f_{i,j}\) : 以 \(i\) ...

  6. Struts2——第一个helloworld页面

    struts2是一个较为成熟的mvc框架,先看看怎么配置struts2并且产生helloworld页面. 首先从官网下载struts2,http://struts.apache.org/downloa ...

  7. 结对编程作业——四则运算GUI程序

    毛忠庆 201421122088 赵嘉楠 201421122065 源代码存放位置:https://gitee.com/ouwen0819/SiZeYunSuan.git 题目描述 使用 -n 参数控 ...

  8. XCode Build Settings中几种Search Paths

    Header search path:去查找头文件的路径,同在在你需要使用第三方库的时候,在这里设置你的头文件路径目录,如图 <code><span class="str& ...

  9. 第三篇:Python字符编码

    一 .了解字符编码的知识储备 1计算机基础知识 1.2文本编辑器存取文件的原理(nodepat++,Pycharm,word) #.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的 ...

  10. nyoj 鸡兔同笼

    鸡兔同笼 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 已知鸡和兔的总数量为n,总腿数为m.输入n和m,依次输出鸡和兔的数目,如果无解,则输出"No an ...