马上放假了,好开森啊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实现磁盘文件监控的更多相关文章

  1. C# FileSystemWatcher 监视磁盘文件

    C# FileSystemWatcher 监视磁盘文件变更 简化需求:有一个简化了的需求是这样的:有一个拍照程序在运行,一旦抓拍之后则将图片文件存储至某目录,然后图片要上传至远程服务器并update数 ...

  2. 16 利用Zabbix完成windows监控

    点击返回:自学Zabbix之路 16 利用Zabbix完成windows监控 1.安装zabbix_agentd 1.1.下载zabbix_agentd监控客户端软件安装包(windows操作系统客户 ...

  3. 17 利用Zabbix完成VMare监控

    点击返回:自学Zabbix之路 17 利用Zabbix完成VMare监控 最近在研究通过Zabbix监控VMware vSphere,Zabbix Documentation 3.0 从文档中我们看到 ...

  4. C# 利用FTP自动下载xml文件后利用 FileSystemWatcher 监控目录下文件变化并自动更新数据库

    using FtpLib; using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  5. C# FileSystemWatcher 监视磁盘文件变更

    简化需求:有一个简化了的需求是这样的:有一个拍照程序在运行,一旦抓拍之后则将图片文件存储至某目录,然后图片要上传至远程服务器并update数据库. 原需求:原先的需求是这样的:有一台PDA扫码枪,一个 ...

  6. Linux下利用nc命令来监控检测服务器的端口使用情况(转载)

    最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉 ...

  7. 利用Windows性能计数器(PerformanceCounter)监控

    一.概述 性能监视,是Windows NT提供的一种系统功能.Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器.性能对象,就 ...

  8. 利用wget 和 curl 监控网站是否正常

    监控网站URL是否正常最常见的方法莫过于wget和curl命令了,这两个命令都是非常强大,参数也非常多,下面列举几个常用的参数. wget  常用命令参数:--spider              ...

  9. zabbix利用自带模板-监控mysql性能

    环境: zabbix3.4.4 mariadb 5.5.56 要求:  利用zabbix 自带的模板 监控mariadb 上的 并发连接数,慢查询数量,增删改查.请求流量带宽,mysql响应流量带宽等 ...

随机推荐

  1. 前端HTML之页面结构

    前端工作一年了,期间由于工作需要,也做了一些产品的设计,因为自己的目标就是做编程,所以婉拒了与产品相关的一些任务,打算主要把精力放到编程这方面. PS:2015年1月进军编程行业. 废话不多讲,这一年 ...

  2. JAVA操作LDAP的详解(JLDAP)

    最近两周由于要学习测试LDAP,所以对于用脚本操作LDAP很感兴趣,所以就做了一些脚本,都是比较简单的脚本吧. 废话不多说了哈.直接上教程 首先声明:我使用的是JLDAP操作LDAP,所以需要从官网下 ...

  3. 第三方Android 模拟器流畅速度快,适合开发人员

    “工欲善其事,必先利其器.” 使用Android模拟器开发和调试应用肯定比使用真机方便.但相比XCODE的IOS模拟器,Android SDK自带的AVD实在不争气,不过一些第三方的模拟器却表现不俗! ...

  4. web前端(实习生)之 “百度一面”

    2016.3.18,星期五.我经历了我的第一次面试. 不得不说,百度是一个高效的公司,在短短一下午之间我就直接经历了一面二面,说没有压力是假的,还记得在中途等待二面的时候我至少有一小段的时间脑子是卡带 ...

  5. HDU 1856 Brave Game(巴什博奕)

    十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天,大家选择 ...

  6. Linux 进程与线程五

    pthread_self函数 pthread_t pthread_self(void); 一般会成功,返回当前线程的ID 注意:在子线程中执行exit()函数会退出整个进程,一般使用pthread_e ...

  7. [LeetCode] Maximum Product of Word Lengths 单词长度的最大积

    Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...

  8. 使用SVG图像作为loading加载 以保证图像高清不模糊

    使用教程 接下来设计达人网小编为大家讲解这个使用方法,其实是相当简单的. STEP 1: 复制你想要的SVG加载动画代码到<body>里面,小编随意复制一个代码如下:<svg ver ...

  9. JFinal 项目 在tomcat下部署

    原文:http://my.oschina.net/jfinal/blog/353062 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任 ...

  10. JavaEE学习文章汇总-并发,集群,分布式

    以下文章来自博客 http://blog.csdn.net/FX_SKY/article/category/6203839 其中包括 集群Zookeeper 环境搭建 http://blog.csdn ...