zoukankan      html  css  js  c++  java
  • C# 文件/目录监听示例

    usingSystem;
    usingSystem.Collections.Generic;
    usingSystem.ComponentModel;
    usingSystem.Data;
    usingSystem.Drawing;
    usingSystem.Linq;
    usingSystem.Text;
    usingSystem.Windows.Forms;
    usingSystem.IO;
    usingSystem.Diagnostics;
    usingSystem.Xml;
    namespaceWindowsFormsApplication1
    {
    publicpartialclassFSWControl:Form
    {
    staticFileSystemWatcher watcher =newFileSystemWatcher();
    publicFSWControl()
    {
    InitializeComponent();
    stringStrPath=ReadrXML("watchdirectory","savedirectory");
    WatcherStrat(StrPath,"*.*",true,true);
    }
    /// <summary>
    /// 初始化监听
    /// </summary>
    /// <param name="StrWarcherPath">需要监听的目录</param>
    /// <param name="FilterType">需要监听的文件类型(筛选器字符串)</param>
    /// <param name="IsEnableRaising">是否启用监听</param>
    /// <param name="IsInclude">是否监听子目录</param>
    privatestaticvoidWatcherStrat(stringStrWarcherPath,stringFilterType,boolIsEnableRaising,boolIsInclude)
    {
    //初始化监听
    watcher.BeginInit();
    //设置监听文件类型
    watcher.Filter=FilterType;
    //设置是否监听子目录
    watcher.IncludeSubdirectories=IsInclude;
    //设置是否启用监听?
    watcher.EnableRaisingEvents=IsEnableRaising;
    //设置需要监听的更改类型(如:文件或者文件夹的属性,文件或者文件夹的创建时间;NotifyFilters枚举的内容)
    watcher.NotifyFilter=NotifyFilters.Attributes|NotifyFilters.CreationTime|NotifyFilters.DirectoryName|NotifyFilters.FileName|NotifyFilters.LastAccess|NotifyFilters.LastWrite|NotifyFilters.Security|NotifyFilters.Size;
    //设置监听的路径
    watcher.Path=StrWarcherPath;
    //注册创建文件或目录时的监听事件
    watcher.Created+=newFileSystemEventHandler(watch_created);
    //注册当指定目录的文件或者目录发生改变的时候的监听事件
    watcher.Changed+=newFileSystemEventHandler(watch_changed);
    //注册当删除目录的文件或者目录的时候的监听事件
    watcher.Deleted+=newFileSystemEventHandler(watch_deleted);
    //当指定目录的文件或者目录发生重命名的时候的监听事件
    watcher.Renamed+=newRenamedEventHandler(watch_renamed);
    //结束初始化
    watcher.EndInit();
    }
    /// <summary>
    /// 创建文件或者目录时的监听事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    privatestaticvoid watch_created(object sender,FileSystemEventArgs e)
    {
    //事件内容
    }
    /// <summary>
    /// 当指定目录的文件或者目录发生改变的时候的监听事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    privatestaticvoid watch_changed(object sender,FileSystemEventArgs e)
    {
    //事件内容
    }
    /// <summary>
    /// 当删除目录的文件或者目录的时候的监听事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    privatestaticvoid watch_deleted(object sender,FileSystemEventArgs e)
    {
    //事件内容
    }
    /// <summary>
    /// 当指定目录的文件或者目录发生重命名的时候的事件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    privatestaticvoid watch_renamed(object sender,RenamedEventArgs e)
    {
    //事件内容
    }
    /// <summary>
    /// 启动或者停止监听
    /// </summary>
    /// <param name="IsEnableRaising">True:启用监听,False:关闭监听</param>
    privatevoidWatchStartOrSopt(boolIsEnableRaising)
    {
    watcher.EnableRaisingEvents=IsEnableRaising;
    }

    /// <summary>
    /// 读取配置文档
    /// </summary>
    /// <param name="StrNode">节点名字</param>
    /// <param name="StrAttribute">属性键</param>
    /// <returns>属性值</returns>
    privatestringReadrXML(stringStrNode,stringStrAttribute)
    {
    string returnValue ="";
    XmlDocument xmldoc =newXmlDocument();
    stringStrPath=AppDomain.CurrentDomain.BaseDirectory;
    xmldoc.Load(StrPath+"xml/Config.xml");
    XmlNodeList nodeList = xmldoc.ChildNodes;
    foreach(XmlNode item in nodeList)
    {
    if(item.Name.Trim().Equals("swfconvert"))
    {
    nodeList = item.ChildNodes;
    foreach(XmlNode nodeitem in nodeList)
    {
    if(nodeitem.Name==StrNode)
    {
    returnValue = nodeitem[StrAttribute].Value;
    return returnValue;
    }
    }
    }
    }
    returnnull;
    }
    }
    }

    转自:http://blog.163.com/lilinrui_ruirui/blog/static/20115803620120510303739/

  • 相关阅读:
    小透明学弟的华为上岸之路
    手把手体验远程开发,确实爽
    老弟做了个网盘,炸了!
    聊聊我在腾讯和字节工作感受
    2021,编程语言如何选择?
    优化了破网站的搜索功能
    15 道超经典大厂 Java 面试题!重中之重
    我两年的坚持,值了!
    聊聊百度搜索背后的故事
    struts2的配置步骤
  • 原文地址:https://www.cnblogs.com/jston/p/3498832.html
Copyright © 2011-2022 走看看