FileSystemWatcher 類別

定義

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

public ref class FileSystemWatcher : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public ref class FileSystemWatcher : IDisposable
public class FileSystemWatcher : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
public class FileSystemWatcher : IDisposable
[System.IO.IODescription("FileSystemWatcherDesc")]
public class FileSystemWatcher : System.ComponentModel.Component, System.ComponentModel.ISupportInitialize
type FileSystemWatcher = class
    inherit Component
    interface ISupportInitialize
type FileSystemWatcher = class
    interface IDisposable
[<System.IO.IODescription("FileSystemWatcherDesc")>]
type FileSystemWatcher = class
    inherit Component
    interface ISupportInitialize
Public Class FileSystemWatcher
Inherits Component
Implements ISupportInitialize
Public Class FileSystemWatcher
Implements IDisposable
繼承
FileSystemWatcher
繼承
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

取得包含 IContainerComponent

(繼承來源 Component)
DesignMode

取得值,這個值表示 Component 目前是否處於設計模式。

(繼承來源 Component)
EnableRaisingEvents

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

Events

取得附加至這個 Component之事件處理程序的清單。

(繼承來源 Component)
Filter

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

Filters

取得所有用來判斷目錄中監控檔案的篩選器集合。

IncludeSubdirectories

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

InternalBufferSize

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

NotifyFilter

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

Path

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

Site

取得或設定 一個 ISite ,為 FileSystemWatcher

SynchronizingObject

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

方法

名稱 Description
BeginInit()

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

CreateObjRef(Type)

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

(繼承來源 MarshalByRefObject)
Dispose()

釋放 FileSystemWatcher.

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)
ToString()

傳回表示目前 物件的字串。

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

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

WaitForChanged(WatcherChangeTypes, TimeSpan)

同步回傳一個結構,包含針對要監控變更類型的特定變更資訊。

WaitForChanged(WatcherChangeTypes)

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

事件

名稱 Description
Changed

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

Created

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

Deleted

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

Disposed

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

(繼承來源 Component)
Error

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

Renamed

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

適用於

另請參閱