[VB.NET][C#.NET] 使用 FileSystemWatcher 監看資料夾 是否被變更
FileSystemWatcher 類別,主要是用來監聽目錄或目錄內的檔案變更,當一有變更即引發事件。根據MSDN所述
Windows 作業系統會在 FileSystemWatcher 所建立的緩衝區中,告知您的元件有檔案變更。如果在短時間內有很多的變更,緩衝區會溢位。這樣會造成元件失去追蹤目錄中變更的線索,而它將只會提供概括性的告知。使用 InternalBufferSize 屬性增加緩衝區大小會高度耗費資源,因為它來自不能交換到磁碟的未分頁記憶體,所以盡可能讓緩衝區愈小愈好,但是不至於小到會遺漏任何檔案變更事件。若要避免緩衝區溢位,使用 NotifyFilter 和 IncludeSubdirectories 屬性,您就可以篩選掉不想要的變更告知。若還不清楚請連至官網
NotifyFilters 列舉型別
若要監看目錄的變更,請執行以下的步驟
1.引用類別
FileSystemWatcher myWatch = new FileSystemWatcher();
2.設定監聽路徑
myWatch.Path = @"C:\";
3.過濾監聽條件(只看text files),此項設定可有可無,但為了節省資源可設定
myWatch.Filter = "*.txt";
4.設定監看類型,此項設定可有可無,但為了節省資源可設定
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
5.設定監聽項目
myWatch.Changed += new FileSystemEventHandler(myWatch_Changed);
6.開啟監聽事件
myWatch.EnableRaisingEvents = true;
7.建立事件方法
private static void myWatch_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine("資料夾已({0}):{1}", e.ChangeType, e.FullPath);
}
來個範例最實在:檔案監視器Sample.rar
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET