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;
        }

    }
}
时间: 2024-12-16 12:54:03

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

Java应用程序监控JavaMelody

JavaMelody是运行在Java Web容器中,用来监控Java内存和J服务器CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求等的执行数量,平均执行时间,错误百分比等. 图表可以按天,周,月,年或自定义时间段查看. 使用方法 下载地址 https://github.com/javamelody/javamelody/releases Maven依赖 <dependency> <groupId>net.bull.javamelody</gr

中维世纪监控某一特定时间段视频的恢复

中维世纪监控某一特定时间段视频的恢复 视频文件格式:MP4(3gp) 案例中硬盘被格式化,又录了一部分视频.此硬盘中有很多分区,用R-Studio扫描后基本确定了这一时段视频所在的分区,并且把分区镜像了出来. 在R-Studio中确定文件的时间信息(本地时间需要加8小时),当然这个时间不一定准确,只作为参考.之后要在文件结构中确认准确的时间. 在RS中确认这个文件的文件头所在扇区:202035786 .见下图: 打开winhex,跳转到文件头扇区.根据文件结构向下分析,搜索文件的索引, 找到后根

Linux crond任务调度 磁盘分区和挂载 网络环境 进程管理 服务(service)管理 动态监控进程 rpm和yum

crond任务调度 1.基本语法 1.crontab [选项] -e : bianji crontab定时任务 -l : 查询crontab -r : 删除当前用户所有的crontab任务2.编辑模式:时间格式 命令或脚本路径 参数说明 示例: 例子: 每分钟执行查看一次/ect目录,把目录内容写进/tml/a.txt下 具体实现步骤: 1.crontab -e 2.*/1 * * * * ls -l /etc >> /tmp/a.txt 3.保存退出 上述权限示例 Linux 磁盘分区.挂载

微服务监控和报警(二)-Prometheus简介及环境搭建

1.Prometheus简介 Prometheus是具有活跃生态系统的开源系统监视和警报工具包.下图是Prometheus的体系结构及其某些生态系统组件.最核心的位置就是Prometheus server,主要的作用就是根据我们的配置去用于收集和存储时间序列数据.Service discovery服务的发现,通过Service discovery,Prometheus server就会知道去哪里采集数据,有两种方式,一种是静态的,通过文件去配:另外一种是动态的,可以通过zookeeper或者其他

Centos6.5 zabbix3.2.6监控mysql

  一.     操作环境 我使用的linux系统是centos6.5,数据库是mysql5.6,apache2.4,php5,6 安装目录: /usr/local/apache /usr/local/php /usr/local/mysql /usr/local/zabbix Zabbix服务器插件安装 Zabbix3.2.6自带监控mysql模板监控项不全面,所以重新下载导入到zabbix里面 下载网址:. https://www.percona.com/downloads/percona-

10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包

- 10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包 - 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html  - tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html  # 10.6 监控io性能 ![mark](http://oqxf7c508.bkt.clouddn.com/b

Performance Monitor4:监控SQL Server的IO性能

SQL Server的IO性能受到物理Disk的IO延迟和SQL Server内部执行的IO操作的影响.在监控Disk性能时,最主要的度量值(metric)是IO延迟,IO延迟是指从Application创建IO请求,到Disk完成IO请求的时间延迟.如果物理Disk不能及时完成IO请求,跟不上请求负载的速度,那么SQL Server就容易出现性能问题.SQL Server内部在执行一些特定的操作时,会和Disk做读写交互,这也会影响物理硬盘响应SQL Server的IO请求的性能,使查询进程处

Performance Monitor3:监控SQL Server的内存压力

SQL Server 使用的资源受到操作系统的调度,同时,SQL Server在内部实现了一套调度算法,用于管理从操作系统获取的资源,主要是对内存和CPU资源的调度.一个好的数据库系统,必定在内存中缓存足够多的信息,以减少从物理硬盘中读取数据的次数:如果内存是系统瓶颈,那么SQL Server一定会运行的非常慢.监控SQL Server的内存压力,需要从Widnows级别上,对内存使用的整体使用情况进行监控:从SQL Server级别上,监控SQL Server对内存资源的使用情况. 一,从Wi

LR如何利用siteScope监控MySQL性能

本次实验,是在自己的电脑上使用APMServ5.2.6部署Discuz2.X论坛下,对该论坛的数据库MySQL5.1进行性能测试的,下面讲述LoadRunner在设计场景时,如何利用siteScope工具监控MySQL数据库性能: 一.在网上下载siteScope 我在网上搜了很久,发现siteScope软件的下载资源很少,毕竟它是收费的,想找个破解版,不过还是有的,哈哈...但是版本旧了点siteScope7.9.5 下载地址:http://download.csdn.net/detail/y