.Net框架類庫中的FileSystemWatcher如它的名稱同樣是一個用於監視文件系統變化的一個控件。使用 FileSystemWatcher 監視指定目錄中的更改。可監視指定目錄中的文件或子目錄的更改。能夠建立一個組件來監視本地計算機、網絡驅動器或遠程計算機上的文件。javascript
若要監視全部文件中的更改,請將 Filter 屬性設置爲空字符串 ("") 或使用通配符(「*.*」)。若要監視特定的文件,請將 Filter 屬性設置爲該文件名。例如,若要監視文件 MyDoc.txt 中的更改,請將 Filter 屬性設置爲「MyDoc.txt」。也能夠監視特定類型文件中的更改。例如,若要監視文本文件中的更改,請將 Filter 屬性設置爲「*.txt」。html
可監視目錄或文件中的若干種更改。例如,可監視文件或目錄的 Attributes、LastWrite 日期和時間或 Size 方面的更改。經過將 NotifyFilter 屬性設置爲 NotifyFilters 值之一來達到此目的。java
可監視文件或目錄的重命名、刪除或建立。例如,若要監視文本文件的重命名,請將 Filter 屬性設置爲「*.txt」,並使用爲其參數指定的 Renamed 來調用 WaitForChanged 方法。安全
下面的示例使用FileSystemWatcher監視當前應用程序下的全部.txt文本文件的變動:網絡
//
定義FileSystemWatcher對象
FileSystemWatcher fsw
=
null
;
public
frm12FileSystemWatcher()
{
InitializeComponent();
//
實例化一個FileSystemWatcher對象
fsw
=
new
FileSystemWatcher();
//
設置要監視的目錄的路徑,當前程序運行的目錄
fsw.Path
=
Application.StartupPath;
//
肯定在目錄中監視全部的.txt文件
fsw.Filter
=
"
*.txt
"
;
//
監視的目錄中建立文件或目錄時引起的事件
fsw.Created
+=
new
FileSystemEventHandler(fsw_Created);
//
監視的目錄中刪除文件或目錄時引起的事件
fsw.Deleted
+=
new
FileSystemEventHandler(fsw_Deleted);
//
監視的目錄中改變文件或目錄時引起的事件
//
監視的目錄中的文件或目錄的大小、系統屬性、
//
上次寫入時間、上次訪問時間或安全權限進行更改時
//
能夠經過設置可組合 NotifyFilters 枚舉的成員,以同時監視多種類型的更改
fsw.Changed
+=
new
FileSystemEventHandler(fsw_Changed);
}
void
fsw_Changed(
object
sender, FileSystemEventArgs e)
{
//
因爲不能跨線程訪問,通匿名方法將顯示操做交給主線程
this
.Invoke((MethodInvoker)
delegate
() { listBox1.Items.Add(
"
文件:
"
+
e.FullPath
+
"
被修改
"
); });
}
void
fsw_Created(
object
sender, FileSystemEventArgs e)
{
//
因爲不能跨線程訪問,通匿名方法將顯示操做交給主線程
this
.Invoke((MethodInvoker)
delegate
() { listBox1.Items.Add(
"
文件:
"
+
e.FullPath
+
"
被建立
"
); });
}
void
fsw_Deleted(
object
sender, FileSystemEventArgs e)
{
//
因爲不能跨線程訪問,通匿名方法將顯示操做交給主線程
this
.Invoke((MethodInvoker)
delegate
() { listBox1.Items.Add(
"
文件:
"
+
e.FullPath
+
"
被刪除
"
); });
}
private
void
btnStart_Click(
object
sender, EventArgs e)
{
//
監視開始
fsw.EnableRaisingEvents
=
true
;
//
建立一個文件,並寫入當前的日期時間
File.AppendAllText(
"
textFile.txt
"
, DateTime.Now.ToString());
//
修改文件,寫入當前的日期時間
File.AppendAllText(
"
textFile.txt
"
, DateTime.Now.ToString());
//
刪除文件
File.Delete(
"
textFile.txt
"
);
}