博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# 文件/目录监听示例

Posted on 2013-12-31 10:03  无、为  阅读(3484)  评论(0编辑  收藏  举报

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/