1、FileSystemWatcher用途:
FileSystemWatcher 元件用來監視檔案系統,而當檔案系統所包含的目錄或檔案變更時,也可以利用它來回應。這讓您能夠在特定檔案或目錄被建立、修改或刪除時快速且容易啟動商務處理流程。
注:FileSystemWatcher元件是設計來監視目錄內的變更,而不是根目錄屬性本身的變更。Changed:變更目錄或檔案的大小、系統屬性、上次寫入時間、上次存取時間或安全性權限時引發。
2、FileSystemWatcher常用屬性
名称 说明
EnableRaisingEvents 获取或设置一个值,该值指示是否启用此元件。
Filter 获取或设置筛选字串,用于确定在目录中监视哪些类型的文件。
IncludeSubdirectories 获取或设置一个值,该值指示是否监视指定路径中的子目录。
InternalBufferSize 获取或设置内部缓存区的大小。
NotifyFilter 获取或设置监视的更改类型。
Path 获取或设置监视的目录路径。
SynchronizingObject 获取或设置一个对象,该对象用于封装因目录更改而发出的事件处理程式调用。
3、FileSystemWatcher常用事件
名称 说明
Changed 当更改指定Path中的文件和目录时发生。
Created 当在指定Path中创建文件或目录时发生。
Deleted 删除指定Path中的文件或目录时发生。
Error 当内部缓存区溢出是发生。
Renamed 重命名指定Path 中的文件或目录时发生。
4、FileSystemWatcher中Filter屬性通配符說明
筛选字串 监视下列文件
*.* 所有文件(预设值)。空字串("")同样监视所有文件。
*.txt 具有“Txt”扩展名的所有文件。
*recipe.doc 文件名以“recipe”结尾且具有“Doc”扩展名的所有文件。
win*.xml 文件名以“win”开头且具有“xml”扩展名的所有文件。
Sales*200?.xls 匹配下列文件:
Sales July 2001.xls,Sales Aug 2002.xls,Sales March 2003.xls
不匹配:
Sales Now 1999.xls
MyReport.Doc 只监视MyReport.Doc
5、FileSystemWatcher中NotifyFilter枚舉值說明
成员名称 说明
Attributes 文件或文件夹的属性
CreationTime 文件或文件夹的创建时间。
DirectoryName 目录名。
FileName 文件名
LastAccess 文件或文件夹上次打开的时间、
LastWrite 上一次向文件或文件夹写入内容的日期。
Security 文件或文件夹的安全设置。
Size 文件或文件夹的大小。
以上可組合此枚舉的成員以監視多種更改。組合時用“|”連接。
6、使用方法:
在窗體中拖入FileSystemWatcher控制項。
設定需要用的事件
編寫事件方法
示例代码:
using System.IO;
namespace FileSystemWatcherDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
UsingFileSystemWatcher();
}
///<summary>
/// 使用FileSystemWatcher方法
///</summary>
void UsingFileSystemWatcher()
{
//6.2
//FileSystemWatcher:侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。
//获取或设置要监视的目录的路径。
fswWatcher.Path =@"D:\upload";
//获取或设置要监视的更改类型。
fswWatcher.NotifyFilter = NotifyFilters.LastWrite|NotifyFilters.FileName|NotifyFilters.LastAccess ;
//获取或设置筛选字符串,用于确定在目录中监视哪些文件。
//此處只能監控某一種文件,不能監控件多種文件,但可以監控所有文件
fswWatcher.Filter ="*.doc";
//获取或设置一个值,该值指示是否监视指定路径中的子目录。
fswWatcher.IncludeSubdirectories =true;
#region 6.3 觸發的事件
//文件或目錄創建時事件
fswWatcher.Created +=new FileSystemEventHandler(fswWatcher_Created);
//文件或目錄變更時事件
fswWatcher.Changed +=new FileSystemEventHandler(fswWatcher_Changed);
//文件或目錄重命名時事件
fswWatcher.Renamed +=new RenamedEventHandler(fswWatcher_Renamed);
//文件或目錄刪除時事件
fswWatcher.Deleted +=new FileSystemEventHandler(fswWatcher_Deleted);
#endregion
//获取或设置一个值,该值指示是否启用此组件。
fswWatcher.EnableRaisingEvents =true;
}
#region 6.4 觸發事件的方法
///<summary>
/// 文件或目錄創建時事件方法
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
void fswWatcher_Created(object sender, FileSystemEventArgs e)
{
MessageBox.Show("有新文件");
}
///<summary>
/// 文件或目錄變更時事件的方法
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
void fswWatcher_Changed(object sender, FileSystemEventArgs e)
{
}
///<summary>
/// 文件或目錄重命名時事件的方法
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
void fswWatcher_Renamed(object sender, RenamedEventArgs e)
{
}
///<summary>
/// 文件或目錄刪除時事件的方法
///</summary>
///<param name="sender"></param>
///<param name="e"></param>
void fswWatcher_Deleted(object sender, FileSystemEventArgs e)
{
}
#endregion
}
}