利用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响应流量带宽等 ...
随机推荐
- 使用EditText的addTextChangedListener(new TextWatcher())方法
(转:http://www.apkbus.com/android-5257-1-14.html) 在使用EditText的addTextChangedListener(new TextWatcher( ...
- Linux httpd源码编译安装
# wget http://apache.fayea.com/httpd/httpd-2.2.31.tar.bz2 去官网下载源码包 # mv httpd-.tar.bz2 /usr/local/sr ...
- L1-009. N个数求和
https://www.patest.cn/contests/gplt/L1-009 原来写的找了好久还是有一个测试点没过, 虽说是道水题,但是今天一遍就过了还是挺高兴的. 送你机组数据 52/5 4 ...
- 常用算法——排序(二)
简单选择排序法 选择排序(Selection Sort)的基本思想:对n个记录进行扫描,选择最小的记录,将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,--不断重复这个过程,直到只剩 ...
- BZOJ 3289: Mato的文件管理[莫队算法 树状数组]
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2399 Solved: 988[Submit][Status][Di ...
- vs2013 error : cannot open source file "SDKDDKVer.h"
改: 项目属性--常规--工具集--Visual Studio 2013-WindowsXP(v120_xp)
- php 7.0 新特性
php 7 主题是性能优化 SEO 之前版本:开发效率快,语言本身性能差 普通的php网站:IO密集型,瓶颈在mysql上,体现不出来php的性能劣势,在密集计算方面比C,C++,JAVA差几十倍甚 ...
- [No00009C]Visual Studio在 解决方案资源管理器 里同步定位打开的文件
标题的意思就是在使用VS的时候,需要我们打开编辑的文件跟解决方案的资源管理器同步显示,这样方便定位到我们在修改哪个文件. 设置如下: 工具——选项——项目和解决方案——在解决方案资源管理器中跟踪活动项 ...
- jdbc java数据库连接 8)防止sql注入
回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象; 写sql 5:执行sql ...
- angular学习笔记(二十八-附1)-$resource中的资源的方法
通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,$save,$delete,$remove,可以直接调用来保存该资源: 比如有一个$resour ...