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 ...
随机推荐
- 【Linux】 用户管理
Linux用户管理 ■ 查看用户整体情况 cat /etc/passwd可以查看用户的一些基本信息.用finger <user>似乎更加方便 查看某一个特定的用户的话就可以 grep &l ...
- Sagit.Framework For IOS 开发框架入门教程6:网络请求STHttp
前言: IOS的文章,今天,再来补一篇,Sagit的教程: 虽然感觉IOS的文章没什么观众,还是努力写吧,-_-〜 Sagit 开源地址:https://github.com/cyq1162/Sagi ...
- java基础笔记(9)----集合之list集合
集合 对于集合的理解,集合是一个容器,用于存储和管理其它对象的对象 集合,首先了解所有集合的父接口----collection 特点:存储任意object元素 方法 boolean add(Objec ...
- 【Spring系列】自己手写一个 SpringMVC 框架
参考文章 一.了解SpringMVC运行流程及九大组件 1.SpringMVC的运行流程 1)用户发送请求至前端控制器DispatcherServlet 2)DispatcherServlet收到请求 ...
- 《Language Implementation Patterns》之 强类型规则
语句的语义取决于其语法结构和相关符号:前者说明了了要"做什么",后者说明了操作"什么对象".所以即使语法结构正确的,如果被操作的对象不合法,语句也是不合法的.语 ...
- exports
暴露函数 var bar = require("./bar.js"); var msg = "你好"; var info = "呵呵"; f ...
- scrapy 修改URL爬取起始位置
import scrapy from Autopjt.items import myItem from scrapy.http import Request class AutospdSpider(s ...
- DML数据操作语言之复杂查询
1.视图(View) 我们知道,在关系型数据库中,用来保存实际数据记录的是数据表.和表同等概念也是用来保存东西是:视图. 但是数据表是用来保存实际数据记录的,而视图是用来保存常用select语句的. ...
- 【作业】HansBug的前三次OO作业分析与小结
OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作. 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些.(点击就送指导书~) 类图 程序的大致结构如下: 代码分析 ...
- OO第一次作业总结
OO第一次学习总结 1.第一次作业:多项式加法 从未接触过java的我,在从输入输出开始学了几天后,按照C语言的思路,写出了一个与面向过程极其接近的程序. 在这个程序中,存在两个类:一个是Comput ...