c#之监控文件结构
如果需要知道修改文件或目录的时间,可以通过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#之监控文件结构的更多相关文章
- Java应用程序监控JavaMelody
JavaMelody是运行在Java Web容器中,用来监控Java内存和J服务器CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求等的执行数量,平均执行时间,错误百分 ...
- ASP.NET MVC 监控诊断、本地化和缓存
这篇博客主要是针对asp.net mvc项目的一些常用的东东做一个讲解,他们分别是监控诊断.本地化和缓存.虽然前两者跟asp.net mvc看上去好像是没什么关联. 但其实如果真正需要做asp.net ...
- 用python 10min手写一个简易的实时内存监控系统
简易的内存监控系统 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 文章github源地址,还可以看到具体的代码,喜欢请在原链接右上角加个star 腾讯视频链接 ...
- 管中窥豹——从对象的生命周期梳理JVM内存结构、GC调优、类加载、AOP编程及性能监控
如题,本文的宗旨既是透过对象的生命周期,来梳理JVM内存结构及GC相关知识,并辅以AOP及双亲委派机制原理,学习不仅仅是海绵式的吸收学习,还需要自己去分析why,加深对技术的理解和认知,祝大家早日走上 ...
- [转]用python 10min手写一个简易的实时内存监控系统
简易的内存监控系统 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 文章github源地址,还可以看到具体的代码,喜欢请在原链接右上角加个star 腾讯视频链接 ...
- JVM基础系列第15讲:JDK性能监控命令
查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...
- JVM基础系列第5讲:字节码文件结构
温馨提示:此篇文章长达两万字,图片50多张,内容非常多,建议收藏后再看. 前面我们说到 Java 虚拟机使用字节码实现了跨平台的愿景,无论什么系统,我们都可以使用 Java 虚拟机解释执行字节码文件. ...
- JDK性能监控命令
阅读原文 查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps ...
- 大众点评cat监控平台搭建
参考官方文档:https://github.com/dianping/cat/wiki/readme_server 1.数据库相关 (1)创建数据库cat,并执行以下sql创建相关表: CREATE ...
随机推荐
- C#图解 (类和继承)
所有的类都派生自object类 除了特殊的类object ,所有的类都是派生类,即使它们没有基类的规格说明.类object是唯一的非派生类,因为它是继承层次结构的基础. 一个类声明的基类规格说明只能有 ...
- Vue基础
1.可以使用 methods 来替代 computed,效果上两个都是一样的. 但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值. {{ reversedMessage ...
- 移动端Web资源整合
meta基础知识 H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...
- Java基础学习笔记十六 集合框架(二)
List List接口的特点: 它是一个元素存取有序的集合.例如,存元素的顺序是11.22.33.那么集合中,元素的存储就是按照11.22.33的顺序完成的. 它是一个带有索引的集合,通过索引就可以精 ...
- 敏捷冲刺每日报告——Day3
1.情况简述 Alpha阶段第一次Scrum Meeting 敏捷开发起止时间 2017.10.27 00:00 -- 2017.10.28 00:00 讨论时间地点 2017.10.27晚9:30, ...
- 项目Alpha冲刺Day1
一.会议照片 二.项目进展 1.今日安排 讨论完成项目的详细设计,并完成数据库的设计,学习powerDesigner的使用 2.问题困难 powerDesigner导出sql语句因为问题无法导入,特别 ...
- python的Collections 模块
Collections 模块 知识点 Counter 类 defaultdict 类 namedtuple 类 在这个实验我们会学习 Collections 模块.这个模块实现了一些很好的数据结构,它 ...
- 在Apache中运行Python WSGI应用
我们介绍如何使用Apache模块mod_wsgi来运行Python WSGI应用. 安装mod_wsgi 我们假设你已经有了Apache和Python环境,在Linux或者Mac上,那第一步自然是安装 ...
- 如何进行服务器Linux系统下的ext文件系统修复
一.故障描述 服务器是dell 730系列服务器,存储阵列是MD3200系列存储5T的Lun,操作系统是Linux centos 7,文件系统类型是EXT4,因意外断电,导致系统不能正常启动,修复之后 ...
- day-1 用python编写一个简易的FTP服务器
从某宝上购买了一份<Python神经网络深度学习>课程,按照视频教程,用python语言,写了一个简易的FTP服务端和客户端程序,以前也用C++写过聊天程序,编程思路差不多,但是pytho ...