FileSystemWatcher 類別

定義

接聽文件系統變更通知,並在目錄或目錄中的檔案變更時引發事件。

public ref class FileSystemWatcher : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public class FileSystemWatcher : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
[System.IO.IODescription("FileSystemWatcherDesc")]
public class FileSystemWatcher : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
type FileSystemWatcher = class
    inherit Component
    interface ISupportInitialize
[<System.IO.IODescription("FileSystemWatcherDesc")>]
type FileSystemWatcher = class
    inherit Component
    interface ISupportInitialize
Public Class FileSystemWatcher
Inherits Component
Implements ISupportInitialize
繼承
FileSystemWatcher
屬性
實作

範例

以下範例建立一個 FileSystemWatcher ,以監控執行時指定的目錄。 元件設定為監控目錄中文字檔的建立、刪除或重新命名時間的變化LastWriteLastAccess。 如果檔案被更改、建立或刪除,該檔案的路徑會印到主控台。 當檔案被重新命名時,舊路徑和新路徑會印到主控台。

using System;
using System.IO;

namespace MyNamespace
{
    class MyClassCS
    {
        static void Main()
        {
            using var watcher = new FileSystemWatcher(@"C:\path\to\folder");

            watcher.NotifyFilter = NotifyFilters.Attributes
                                 | NotifyFilters.CreationTime
                                 | NotifyFilters.DirectoryName
                                 | NotifyFilters.FileName
                                 | NotifyFilters.LastAccess
                                 | NotifyFilters.LastWrite
                                 | NotifyFilters.Security
                                 | NotifyFilters.Size;

            watcher.Changed += OnChanged;
            watcher.Created += OnCreated;
            watcher.Deleted += OnDeleted;
            watcher.Renamed += OnRenamed;
            watcher.Error += OnError;

            watcher.Filter = "*.txt";
            watcher.IncludeSubdirectories = true;
            watcher.EnableRaisingEvents = true;

            Console.WriteLine("Press enter to exit.");
            Console.ReadLine();
        }

        private static void OnChanged(object sender, FileSystemEventArgs e)
        {
            if (e.ChangeType != WatcherChangeTypes.Changed)
            {
                return;
            }
            Console.WriteLine($"Changed: {e.FullPath}");
        }

        private static void OnCreated(object sender, FileSystemEventArgs e)
        {
            string value = $"Created: {e.FullPath}";
            Console.WriteLine(value);
        }

        private static void OnDeleted(object sender, FileSystemEventArgs e) =>
            Console.WriteLine($"Deleted: {e.FullPath}");

        private static void OnRenamed(object sender, RenamedEventArgs e)
        {
            Console.WriteLine($"Renamed:");
            Console.WriteLine($"    Old: {e.OldFullPath}");
            Console.WriteLine($"    New: {e.FullPath}");
        }

        private static void OnError(object sender, ErrorEventArgs e) =>
            PrintException(e.GetException());

        private static void PrintException(Exception? ex)
        {
            if (ex != null)
            {
                Console.WriteLine($"Message: {ex.Message}");
                Console.WriteLine("Stacktrace:");
                Console.WriteLine(ex.StackTrace);
                Console.WriteLine();
                PrintException(ex.InnerException);
            }
        }
    }
}
Imports System.IO

Namespace MyNamespace

    Class MyClassVB

        Shared Sub Main()
            Using watcher = New FileSystemWatcher("C:\path\to\folder")
                watcher.NotifyFilter = NotifyFilters.Attributes Or
                                       NotifyFilters.CreationTime Or
                                       NotifyFilters.DirectoryName Or
                                       NotifyFilters.FileName Or
                                       NotifyFilters.LastAccess Or
                                       NotifyFilters.LastWrite Or
                                       NotifyFilters.Security Or
                                       NotifyFilters.Size

                AddHandler watcher.Changed, AddressOf OnChanged
                AddHandler watcher.Created, AddressOf OnCreated
                AddHandler watcher.Deleted, AddressOf OnDeleted
                AddHandler watcher.Renamed, AddressOf OnRenamed
                AddHandler watcher.Error, AddressOf OnError

                watcher.Filter = "*.txt"
                watcher.IncludeSubdirectories = True
                watcher.EnableRaisingEvents = True

                Console.WriteLine("Press enter to exit.")
                Console.ReadLine()
            End Using
        End Sub

        Private Shared Sub OnChanged(sender As Object, e As FileSystemEventArgs)
            If e.ChangeType <> WatcherChangeTypes.Changed Then
                Return
            End If
            Console.WriteLine($"Changed: {e.FullPath}")
        End Sub

        Private Shared Sub OnCreated(sender As Object, e As FileSystemEventArgs)
            Dim value As String = $"Created: {e.FullPath}"
            Console.WriteLine(value)
        End Sub

        Private Shared Sub OnDeleted(sender As Object, e As FileSystemEventArgs)
            Console.WriteLine($"Deleted: {e.FullPath}")
        End Sub

        Private Shared Sub OnRenamed(sender As Object, e As RenamedEventArgs)
            Console.WriteLine($"Renamed:")
            Console.WriteLine($"    Old: {e.OldFullPath}")
            Console.WriteLine($"    New: {e.FullPath}")
        End Sub

        Private Shared Sub OnError(sender As Object, e As ErrorEventArgs)
            PrintException(e.GetException())
        End Sub

        Private Shared Sub PrintException(ex As Exception)
            If ex IsNot Nothing Then
                Console.WriteLine($"Message: {ex.Message}")
                Console.WriteLine("Stacktrace:")
                Console.WriteLine(ex.StackTrace)
                Console.WriteLine()
                PrintException(ex.InnerException)
            End If
        End Sub

    End Class

End Namespace

備註

欲了解更多關於此 API 的資訊,請參閱 FileSystemWatcher 的補充 API 備註

建構函式

名稱 Description
FileSystemWatcher()

初始化 FileSystemWatcher 類別的新執行個體。

FileSystemWatcher(String, String)

初始化該類別的新實例 FileSystemWatcher ,根據指定的目錄與監控檔案類型。

FileSystemWatcher(String)

初始化該類別的新實例 FileSystemWatcher ,給定指定的監控目錄。

屬性

名稱 Description
CanRaiseEvents

會得到一個值,表示該元件是否能引發事件。

(繼承來源 Component)
Container

得到 IContainer 包含 Component的 。

(繼承來源 Component)
DesignMode

會得到一個值,表示目前 Component 是否處於設計模式。

(繼承來源 Component)
EnableRaisingEvents

取得或設定一個值,表示該元件是否被啟用。

Events

會取得與此 Component連結的事件處理程序清單。

(繼承來源 Component)
Filter

取得或設定用來判斷目錄中監控哪些檔案的過濾字串。

IncludeSubdirectories

取得或設定一個值,指示指定路徑內的子目錄是否應該被監控。

InternalBufferSize

取得或設定內部緩衝區的大小(以位元組為單位)。

NotifyFilter

能獲得或設定需要注意的變化類型。

Path

取得或設定目錄的路徑要監視。

Site

取得或設定 一個 ISite ,為 FileSystemWatcher

SynchronizingObject

取得或設定用於編制因目錄變更而發出的事件處理呼叫的物件。

方法

名稱 Description
BeginInit()

開始初始化 used FileSystemWatcher 於表單或被其他元件使用。 初始化發生在執行時。

CreateObjRef(Type)

建立一個物件,包含產生代理伺服器所需的所有相關資訊,用於與遠端物件通訊。

(繼承來源 MarshalByRefObject)
Dispose()

釋放所有由 Component.

(繼承來源 Component)
Dispose(Boolean)

釋放 未管理的資源, FileSystemWatcher 並可選擇性地釋放受管理資源。

EndInit()

終止 used FileSystemWatcher 於表單或其他元件的初始化。 初始化發生在執行時。

Equals(Object)

判斷指定的 物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetLifetimeService()

取得目前控制此實例生命週期政策的終身服務物件。

(繼承來源 MarshalByRefObject)
GetService(Type)

回傳一個由 或Component其 所提供的Container服務的物件。

(繼承來源 Component)
GetType()

取得目前實例的 Type

(繼承來源 Object)
InitializeLifetimeService()

取得一個終身服務物件以控制此實例的終身政策。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立一個 MarshalByRefObject 目前物件的淺層複製品。

(繼承來源 MarshalByRefObject)
OnChanged(FileSystemEventArgs)

引發 Changed 事件。

OnCreated(FileSystemEventArgs)

引發 Created 事件。

OnDeleted(FileSystemEventArgs)

引發 Deleted 事件。

OnError(ErrorEventArgs)

引發 Error 事件。

OnRenamed(RenamedEventArgs)

引發 Renamed 事件。

ToString()

回傳 String 包含 的名稱 Component(若有的話)。 此方法不應被覆蓋。

(繼承來源 Component)
WaitForChanged(WatcherChangeTypes, Int32)

一種同步方法,回傳一個結構,包含你想監控的變更類型及逾時前等待時間(以毫秒為單位)所發生的變更資訊。

WaitForChanged(WatcherChangeTypes)

一種同步方法,回傳一個結構,包含針對你想監控的變更類型所發生變更的具體資訊。

事件

名稱 Description
Changed

當指定 Path 檔案或目錄被更改時,會發生這種情況。

Created

當指定檔案 Path 或目錄被建立時,會發生這種情況。

Deleted

當指定 Path 檔案或目錄被刪除時,會發生這種情況。

Disposed

當元件被呼叫方法 Dispose() 時會發生。

(繼承來源 Component)
Error

當 的 FileSystemWatcher 實例無法繼續監控變更,或內部緩衝區溢位時會發生。

Renamed

當指定 Path 檔案或目錄被重新命名時,會發生這種情況。

適用於

另請參閱