FileSystemWatcher 的使用
static FileSystemWatcher watcher = new FileSystemWatcher();
public Form1()
{
InitializeComponent();
this.FormClosing += new FormClosingEventHandler(Main2_FormClosing);
//string StrPath = ReadrXML("watchdirectory", "savedirectory");
//string filename = DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".xml";
string foldname = Environment.CurrentDirectory + "\\stringtoxml\\";
WatcherStrat(foldname, "*.xml", true, true);
}
/// <summary>
/// 初始化監聽
/// </summary>
/// <param name="StrWarcherPath">需要監聽的目錄</param>
/// <param name="FilterType">需要監聽的文件類型(篩選器字符串)</param>
/// <param name="IsEnableRaising">是否啓用監聽</param>
/// <param name="IsInclude">是否監聽子目錄</param>
private static void WatcherStrat(string StrWarcherPath, string FilterType, bool IsEnableRaising, bool IsInclude)
{
//初始化監聽
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 += new FileSystemEventHandler(watch_created);
//註冊當指定目錄的文件或者目錄發生改變的時候的監聽事件
watcher.Changed += new FileSystemEventHandler(watch_changed);
//註冊當刪除目錄的文件或者目錄的時候的監聽事件
watcher.Deleted += new FileSystemEventHandler(watch_deleted);
//當指定目錄的文件或者目錄發生重命名的時候的監聽事件
watcher.Renamed += new RenamedEventHandler(watch_renamed);
//結束初始化
watcher.EndInit();
}
/// <summary>
/// 創建文件或者目錄時的監聽事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void watch_created(object sender, FileSystemEventArgs e)
{
int a = 0;
//事件內容
}
/// <summary>
/// 當指定目錄的文件或者目錄發生改變的時候的監聽事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void watch_changed(object sender, FileSystemEventArgs e)
{
int a = 0;
//事件內容
}
/// <summary>
/// 當刪除目錄的文件或者目錄的時候的監聽事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void watch_deleted(object sender, FileSystemEventArgs e)
{
int a = 0;
//事件內容
}
/// <summary>
/// 當指定目錄的文件或者目錄發生重命名的時候的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void watch_renamed(object sender, RenamedEventArgs e)
{
int a = 0;
//事件內容
}
/// <summary>
/// 啓動或者停止監聽
/// </summary>
/// <param name="IsEnableRaising">True:啓用監聽,False:關閉監聽</param>
private void WatchStartOrSopt(bool IsEnableRaising)
{
watcher.EnableRaisingEvents = IsEnableRaising;
}
/// <summary>
/// 讀取配置文檔
/// </summary>
/// <param name="StrNode">節點名字</param>
/// <param name="StrAttribute">屬性鍵</param>
/// <returns>屬性值</returns>
private string ReadrXML(string StrNode, string StrAttribute)
{
string returnValue = "";
XmlDocument xmldoc = new XmlDocument();
string StrPath = 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;
}
}
}
}
return null;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.