[VB.NET][C#.NET] 使用 FileSystemWatcher 監看資料夾 是否被變更

[VB.NET][C#.NET] 使用 FileSystemWatcher 監看資料夾 是否被變更

FileSystemWatcher 類別,主要是用來監聽目錄或目錄內的檔案變更,當一有變更即引發事件。根據MSDN所述

Windows 作業系統會在  FileSystemWatcher 所建立的緩衝區中,告知您的元件有檔案變更。如果在短時間內有很多的變更,緩衝區會溢位。這樣會造成元件失去追蹤目錄中變更的線索,而它將只會提供概括性的告知。使用 InternalBufferSize 屬性增加緩衝區大小會高度耗費資源,因為它來自不能交換到磁碟的未分頁記憶體,所以盡可能讓緩衝區愈小愈好,但是不至於小到會遺漏任何檔案變更事件。若要避免緩衝區溢位,使用 NotifyFilter IncludeSubdirectories 屬性,您就可以篩選掉不想要的變更告知。若還不清楚請連至官網

 

NotifyFilters 列舉型別

1

若要監看目錄的變更,請執行以下的步驟

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

Image result for microsoft+mvp+logo