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
}
}