利用FileSystemWatcher实现磁盘文件监控
马上放假了,好开森啊O(∩_∩)O哈哈~
———————————————————————————————————————————————————————
昨天逛园子,发现了一个FileSystemWatcher的东西,大概看了一下,完全可以在后台自动监控文件的变化,深深后悔以前没有发现啊,简直为我省去了一大段代码啊……
节前工作不是很多,就尝试着用了一下,不过发现还有些问题,就是事件会重复触发,以后再解决吧。就不多罗嗦了……
贴代码才是王道啊
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO; namespace filewatcher
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string pt;//file path
FileSystemWatcher watcher = new FileSystemWatcher();
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
radioButton1.Checked = true;
ListView lst = new ListView();
}
private void textBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
FolderBrowserDialog path = new FolderBrowserDialog();
path.ShowDialog();
this.textBox1.Text = path.SelectedPath.ToString();
this.textBox1.Font = new Font(textBox1.Font, textBox1.Font.Style | FontStyle.Regular);
this.textBox1.TextAlign =HorizontalAlignment.Left;
this.textBox1.ForeColor = Color.Black;
pt = textBox1.Text;
} private void toolStripButton1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
pt = "C:\\";
if (radioButton2.Checked)
pt = "D:\\";
if (radioButton3.Checked)
pt = "E:\\";
if (radioButton4.Checked)
pt = "F:\\";
filewatcher();
groupBox1.Enabled = false;
} private void toolStripButton2_Click(object sender, EventArgs e)
{
watcher.EnableRaisingEvents = false;
groupBox1.Enabled = true;
} private void filewatcher()
{
try
{ if (flag == 1)
{
watcher.Path = @pt;
watcher.IncludeSubdirectories = true;//全局文件监控,包括子目录
watcher.EnableRaisingEvents = true;//启用文件监控
watcher.Created += new FileSystemEventHandler(OnCreat);
watcher.Deleted += new FileSystemEventHandler(OnDelet);
watcher.Changed += new FileSystemEventHandler(OnChange); }
else
{
watcher.EnableRaisingEvents = false;
return;
}
}
catch(Exception ex)
{
return;
} }
private void OnCreat(object sender, FileSystemEventArgs e)
{
ListViewItem li = new ListViewItem(DateTime.Now.ToString("HH:mm:ss"));
li.SubItems.Add(getname(e.Name.ToString()));
li.SubItems.Add(e.ChangeType.ToString());
li.SubItems.Add(e.FullPath.ToString());
lst.Items.Add(li);
}
private void OnDelet(object sender, FileSystemEventArgs e)
{
ListViewItem li = new ListViewItem(DateTime.Now.ToString("HH:mm:ss"));
li.SubItems.Add(getname(e.Name.ToString()));
li.SubItems.Add(e.ChangeType.ToString());
li.SubItems.Add(e.FullPath.ToString());
lst.Items.Add(li);
}
private void OnChange(object sender, FileSystemEventArgs e)
{
ListViewItem li = new ListViewItem(DateTime.Now.ToString("HH:mm:ss"));
li.SubItems.Add(getname(e.Name.ToString()));
li.SubItems.Add(e.ChangeType.ToString());
li.SubItems.Add(e.FullPath.ToString());
lst.Items.Add(li);
}
//处理,获得文件名
private string getname(string str)
{
try
{
string[] sttarr = str.Split(new char[] { Convert.ToChar("\\") });
int length = sttarr.Length;
string filename = sttarr[length-1];
return filename;
}
catch (Exception cc)
{
MessageBox.Show("文件路径不合法","提示");
return str;
}
}
}
}
运行界面

:突然发现点小问题,就是事件会重复触发。。。顺道求解决方案啊
利用FileSystemWatcher实现磁盘文件监控的更多相关文章
- C# FileSystemWatcher 监视磁盘文件
C# FileSystemWatcher 监视磁盘文件变更 简化需求:有一个简化了的需求是这样的:有一个拍照程序在运行,一旦抓拍之后则将图片文件存储至某目录,然后图片要上传至远程服务器并update数 ...
- 16 利用Zabbix完成windows监控
点击返回:自学Zabbix之路 16 利用Zabbix完成windows监控 1.安装zabbix_agentd 1.1.下载zabbix_agentd监控客户端软件安装包(windows操作系统客户 ...
- 17 利用Zabbix完成VMare监控
点击返回:自学Zabbix之路 17 利用Zabbix完成VMare监控 最近在研究通过Zabbix监控VMware vSphere,Zabbix Documentation 3.0 从文档中我们看到 ...
- C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库
using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...
- C# FileSystemWatcher 监视磁盘文件变更
简化需求:有一个简化了的需求是这样的:有一个拍照程序在运行,一旦抓拍之后则将图片文件存储至某目录,然后图片要上传至远程服务器并update数据库. 原需求:原先的需求是这样的:有一台PDA扫码枪,一个 ...
- Linux下利用nc命令来监控检测服务器的端口使用情况(转载)
最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉 ...
- 利用Windows性能计数器(PerformanceCounter)监控
一.概述 性能监视,是Windows NT提供的一种系统功能.Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器.性能对象,就 ...
- 利用wget 和 curl 监控网站是否正常
监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大,参数也非常多,下面列举几个常用的参数. wget 常用命令参数:--spider ...
- zabbix利用自带模板-监控mysql性能
环境: zabbix3.4.4 mariadb 5.5.56 要求: 利用zabbix 自带的模板 监控mariadb 上的 并发连接数,慢查询数量,增删改查.请求流量带宽,mysql响应流量带宽等 ...
随机推荐
- WPF 自定义模板 Button闪亮效果
Button的选中Effect,我们看下下面的效果: 让我们再放大一点: 怎么设置上面样式呢?直接设置Button的Effect,有点问题,因为Effect不是四周环绕的.那我们也只能重新定义Temp ...
- Python version 3.4 required, which was not found in the registry.解决
问题描述: 在Win7环境下已安装Python3.4,准备安装numpy和nltk,运行安装程序报如题错误,具体解决方案如下: 1.将LOCAL_MACHINE\software\python\Pyh ...
- 基于TQ2440的SPI驱动学习(OLED)
平台简介 开发板:TQ2440 (NandFlash:256M 内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdongl ...
- sed教程
http://jl453625978.blog.163.com/blog/static/86041705201171511624868/
- ubuntu14.04 yuv文件的播放及视频信息的查看
1.安装ffmpeg sudo add-apt-repository ppa:mc3man/trusty-media sudo apt-get update sudo apt-get install ...
- python网络编程-TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...
- RandHelper
/// <summary> /// 类说明:RandHelper类,用来实现取随机 /// 编码日期:2015-12-29 /// 编 码 人:里程碑 /// 修改日期:2015-12-2 ...
- HttpHelper
/// <summary> /// 类说明:HttpHelper类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理 /// 重要提 ...
- 理解C# 4 dynamic(4) – 让人惊艳的Clay
Clay非常类似于ExpandoObject, 可以看做是ExpandoObject的加强版. 它们能够让我们在不需要定义类的情况下,就构建出我们想要的对象.Clay和ExpandoObject相比, ...
- 阿里云VPS服务器,ROS内网穿透
Aliyun Windows Server 2008 R2中建立vpn服务器,ros中使用pptp拨号连接 2.在Aliyun服务器中,修改hosts,将内网分配的ip映射到指定的域名,在Aliyun ...