C#使用FileSystemWatcher控件实现的文件监控功能示例

本文实例讲述了C#使用FileSystemWatcher控件实现的文件监控功能。分享给大家供大家参考,具体如下:

FileSystemWatcher

可以使用FileSystemWatcher组件监视文件系统,并对文件系统的改变作出反应。通过使用FileSystemWatcher组件,在特定的文件或目录被创建、修改或删除时,可以快速和便捷地启动业务流程。

例如,如果一组用户在合作处理一个存储在服务器共享目录下的文档时,可以使用FileSystemWatcher组件编写应用程序来监视对共享目录的更改情况。当检测到更改时,该组件可以运行处理过程,通过电子邮件通知每个用户。

可以配置组件来监视整个目录及其内容,或特定目录下一个特定的文件或一组文件。若要监视所有文件中的更改,应将Filter属性设置为空字符串("");若要监视特定的文件,应将Filter属性设置为该文件的文件名(例如,若要监视文件MyDoc.txt中的更改,将Filter属性设置为"MyDoc.txt");也可以监视特定文件类型中的更改,例如若要监视文本文件中的更改,将Fillter属性设置为"*.txt"。

【提示】不要忽略隐藏文件。

可监视目录或文件中的若干种更改。例如,可监视文件或目录的Attributes、LastWrite的日期和时间或Size的更改。通过将
FileSystemWatcher.NotifyFilter属性设置为NotifyFilters中的某个值,就可以实现这个目标。

还可以监视文件或目录的重命名、删除或创建。例如,若要监视文本文件的重命名,可将Filter属性设置为"*.txt",并调用一个WaitForChanged方法,并设置该方法中WatcherChangeTypes的值为Renamed。

下面举例说明。创建一个FileSystemWatche组件来监视运行时指定的目录。组件被设置用来监视LastWrite和LastAccess时间的更改,以及目录中文本文件的创建、删除或重命名。如果文件被更改、创建或删除,则文件的路径就会被输出到控制台。当一个文件被重命名时,旧的和新的路径都被输出到控制台。

实例 使用FileSystemWatche组件来监视运行时指定的目录:

using System;
using System.IO;
public class watcher
{
  public static void Main(string[] args)
  {
    //如果没有指定目录,则退出程序
    if(args.Length!=1)
    {
      //显示调用程序的正确方法
      Console.WriteLine("usage:Watcher.exe(directory)");
      return;
    }
    //创建一个新的FileSystemWatcher并设置其属性
    FileSystemWatcher watcher=new FileSystemWatcher();
    watcher.Path=args[O];
    /*监视LastAcceSS和LastWrite时间的更改以及文件或目录的重命名*/
    watcher.NotifyFilter=NotifyFilters.LastAccess | NotifyFilters.LastWrite |
           NotifyFilters.FileName | NotifyFilters.DirectoryName;
    //只监视文本文件
    watcher.Filter="*.txt";
    //添加事件句柄
    //当由FileSystemWatcher所指定的路径中的文件或目录的
    //大小、系统属性、最后写时间、最后访问时间或安全权限
    //发生更改时,更改事件就会发生
    watcher.Changed +=new FileSystemEventHandler(OnChanged);
    //由FileSystemWatcher所指定的路径中文件或目录被创建时,创建事件就会发生
    watcher.Created +=new FileSystemEventHandler(OnChanged);
    //当由FileSystemWatcher所指定的路径中文件或目录被删除时,删除事件就会发生
    watcher.Deleted +=new FileSystemEventHandler(OnChanged) ;
    //当由FileSystemWatcher所指定的路径中文件或目录被重命名时,重命名事件就会发生
    watcher.Renamed +=new RenamedEventHandler(OnRenamed);
    //开始监视
    watcher.EnableRaisingEvents=true;
    //等待用户退出程序
    Console.WriteLine("Press\'q\' to quit the sample.");
    while(Console.Read()!='q');
  }
  //定义事件处理程序
  public static void OnChanged(object sender,FileSystemEventArgs e)
  {
    //指定当文件被更改、创建或删除时要做的事
    Console.WriteLine("file:"+e.FullPath+""+e.ChangeType);
  }
  public static void OnRenamed(object sender,RenamedEventArgs e)
  {
    //指定当文件被重命名时发生的动作
    Console.WriteLine("Fi]e:{0} renamed to{1}",e.OldFullPath,e.FullPath);
  }
}

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#文件操作常用技巧汇总》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

(0)

相关推荐

  • c# 共享状态的文件读写实现代码

    复制代码 代码如下: using System.IO; using System.Text; namespace LucienBao.Commons { public static class FileHelper { public static string ShareRead(string file, Encoding encoding) { string content = string.Empty; FileStream fs = new FileStream(file, FileMod

  • C#的FileSystemWatcher用法实例详解

    本文实例详述了C#的FileSystemWatcher用法.分享给大家供大家参考.具体用法如下: FileSystemWatcher控件主要功能: 监控指定文件或目录的文件的创建.删除.改动.重命名等活动.可以动态地定义需要监控的文件类型及文件属性改动的类型. 1.常用的几个基本属性: (1) Path :设置要监视的目录的路径. (2) IncludeSubdirectories :设置是否级联监视指定路径中的子目录. (3) Filter :设置筛选字符串,用于确定在目录中监视哪些类型的文件

  • c# 服务器上传木马监控代码(包含可疑文件)

    复制代码 代码如下: using System; using System.IO; using System.Threading; using System.Windows.Forms; using System.Net; namespace TrojanMonitor { public partial class Form1 : Form { public Form1() { InitializeComponent(); } delegate void SetTextCallback(stri

  • C#判断本地文件是否处于打开状态的方法

    本文实例讲述了C#判断本地文件是否处于打开状态的方法.分享给大家供大家参考.具体分析如下: 对于应用程序,有时候可能需要判断某个文件是否已经被打开,也就是指是否被某个流连接着.这在对文件的读写比较频繁的程序中尤为重要,因为一个文件同一时刻只能有一个流连接的.下面的代码也许能有所帮助. public class FileStatus { [DllImport("kernel32.dll")] private static extern IntPtr _lopen(string lpPat

  • C#监控文件夹变化的方法

    本文实例讲述了C#监控文件夹变化的方法.分享给大家供大家参考.具体实现方法如下: 当需要监控某一文件,FileSystemWatcher类提供了Created, Deleted,Rename等事件. 就拿FileSystemWatcher的Created事件来说,该事件类型是FileSystemEventHandler. 复制代码 代码如下: public delgate void FileSystemEventHandler(Object sender, FileSystemEventArgs

  • c#使用filesystemwatcher实时监控文件目录的添加和删除

    首先,我们需要对.net提供的FileSystemWatcher类有所了解.我有些懒,找了MSDN对该类的描述. FileSystemWatcher类侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件. 使用 FileSystemWatcher 监视指定目录中的更改.可监视指定目录中的文件或子目录的更改.可以创建一个组件来监视本地计算机.网络驱动器或远程计算机上的文件. 若要监视所有文件中的更改,请将 Filter 属性设置为空字符串 ("") 或使用通配符("*

  • C#采用FileSystemWatcher实现监视磁盘文件变更的方法

    本文实例讲述了C#采用FileSystemWatcher实现监视磁盘文件变更的方法.分享给大家供大家参考.具体实现方法如下: 简化需求:有一个简化了的需求是这样的:有一个拍照程序在运行,一旦抓拍之后则将图片文件存储至某目录,然后图片要上传至远程服务器并update数据库. 原需求:原先的需求是这样的:有一台PDA扫码枪,一个IP照相机放置在下线区传送带上方.当PDA扫描箱子上的条码,触发相机拍照,将图片流传至远端服务器,找到对应的条码,将图片存储并更新数据库. 然而我不知道PDA扫描的瞬间如何与

  • c#实现数据同步的方法(使用文件监控对象filesystemwatcher)

    最近在项目中有这么个需求,就是得去实时获取某个在无规律改变的文本文件中的内容.首先想到的是用程序定期去访问这个文件,因为对实时性要求很高,间隔不能超过1S,而且每次获取到文本内容都要去分发给WEB服务器做别的操作,而那个文本的写入有时候会频繁,1秒可能多次,但是也有可能在相当长一段时间内是没有任何写入的. 这样一来如果每秒都去访问文件的话,一个是IO问题,还有就是每次操作都会引起后端一系列程序的反应,文本在长时间内无写入的话,一秒一次的触发一系列徒劳的事情太不可取了. 最终发现了c#中的File

  • c#使用filesystemwatcher监视文件系统的变化

    复制代码 代码如下: #region 监视文件夹的变化            FileSystemWatcher watcher = new FileSystemWatcher();            watcher.Path = "f:\\";            watcher.NotifyFilter =//被监控的方面               NotifyFilters.LastWrite |               NotifyFilters.FileName

  • C#使用FileSystemWatcher控件实现的文件监控功能示例

    本文实例讲述了C#使用FileSystemWatcher控件实现的文件监控功能.分享给大家供大家参考,具体如下: FileSystemWatcher 可以使用FileSystemWatcher组件监视文件系统,并对文件系统的改变作出反应.通过使用FileSystemWatcher组件,在特定的文件或目录被创建.修改或删除时,可以快速和便捷地启动业务流程. 例如,如果一组用户在合作处理一个存储在服务器共享目录下的文档时,可以使用FileSystemWatcher组件编写应用程序来监视对共享目录的更

  • asp.net fileupload控件上传文件与多文件上传

    1.前台文件 Default.aspx: <%@ Page Language="C#" AutoEventWireup="true"CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.

  • JavaScript判断FileUpload控件上传文件类型

    为了代码变得更加简捷,笔者使用了正则表达式来获取文件扩展名,如果读者对正则表达式不太了解或者从来没有接触过,请马上恶补一下吧!毕竟它非常重要,大多数的编程语言都支持正则表达式. 大家都知道,后台获取FileUpload扩展名方法: string ext = Path.GetExtension(fu.PostedFile.FileName); JS判断FileUpload控件上传文件的扩展名: <html xmlns="http://www.w3.org/1999/xhtml"&g

  • File文件控件,选中文件(图片,flash,视频)即立即预览显示

    我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的.那怎么进行无刷新预览呢?这里我把我所使用的方法写一下. 选择页面:  复制代码 代码如下: <script language="javascript"> function checkData() { var fileName=document.getElementById("FileUp").value;

  • C#开发Winform控件之打开文件对话框OpenFileDialog类

    OpenFileDialog类提供了用户打开文件的功能,它有如下属性: 属性 InitialDirectory:设置对话框的初始目录. Filter: 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*". FilterIndex: 在对话框中选择的文件筛选器的索引,如果选第一项就设为1. RestoreDirectory: 控制对话框在关闭之前是否恢复当前目录. FileName:第一个在对话框中显示的文件或最后一个选取的文件. T

  • C#在Windows窗体控件实现内容拖放(DragDrop)功能

    一.将控件内容拖到其他控件 在开发过程中,经常会有这样的要求,拖动一个控件的数据到另外一个控件中.例如将其中一个ListBox中的数据拖到另一个ListBox中.或者将DataGridView中的数据拖动到TreeView的某个节点. 在应用程序中,是通过处理一系列事件,如DragEnter,DragLeave和DragDrop事件来实现在Windows应用程序中的拖放操作的.通过使用这些事件参数中的可用信息,可以轻松实现拖放操作. 拖放操作在代码中是通过三步实现的,首先是启动拖放操作,在需要拖

  • ASP.NET My97DatePicker日期控件实现OA日期记事功能

    My97DatePicker日期控件是一个非常好用的日期控件,功能非常优秀的日期控件. 对实现页面刷新完善的很好,用日期控件时可以有比较好的享受,这次的OA日期记事功能也得益于此控件,具体效果图如下: 部分代码: Default页布局一个Calendar日期控件 <div> <asp:Calendar ID="Calendar1" runat="server" Width="100%" ShowGridLines="T

  • python调用短信猫控件实现发短信功能实例

    python调用短信猫控件实现发短信功能实例代码如下所示: #! /usr/bin/env python #coding=gbk import sys import win32com.client ocxname='ShouYan_SmsGate61.Smsgate' axocx=win32com.client.Dispatch(ocxname) axocx.CommPort=8#设置COM端口号 axocx.SmsService='+8613800100500'#设置短信服务号码 axocx.

  • C# Winform 实现控件自适应父容器大小的示例代码

    在日常开发中经常遇到控件不能随着父容器大小的改变而且自动改变控件的所在位置和大小.以下是实现的代码 /// <summary> /// 根据父容器实现控件自适应大小位置 /// </summary> /// <param name="control">所需自适应大小位置的控件</param> private void ChangeLocationSizeByParent (Control control) { //记录父容器大小,来判断改

  • asp.net使用原生控件实现自定义列导出功能的方法

    目录 自定义列实现 尝试一 尝试二 总结 自定义列实现 最近负责开发公司内部使用的人事信息化系统时,有一个需求是这样的,需要在页面中可以用户每次导出Excel时自定义需要导出哪些列,经过半天的琢磨和倒腾,总算完成了这个需求.写篇blog记录一下小菜鸡的成长历程.哈哈哈. 需求见截图所示: tbg:数据源使用DataTable.且GridView中用于绑定数据的BoundFiled列中使用的DataField全部是与CheckBox中的ID一一对应,这样方便后面循环这些控件时进行操作. 尝试一 数

随机推荐