FileSystemWatcher 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
接聽文件系統變更通知,並在目錄或目錄中的檔案變更時引發事件。
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 ,以監控執行時指定的目錄。 元件設定為監控目錄中文字檔的建立、刪除或重新命名時間的變化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 |
|---|---|
| Changed |
當指定 Path 檔案或目錄被更改時,會發生這種情況。 |
| Created |
當指定檔案 Path 或目錄被建立時,會發生這種情況。 |
| Deleted |
當指定 Path 檔案或目錄被刪除時,會發生這種情況。 |
| Disposed |
當元件被呼叫方法 Dispose() 時會發生。 (繼承來源 Component) |
| Error |
當 的 FileSystemWatcher 實例無法繼續監控變更,或內部緩衝區溢位時會發生。 |
| Renamed |
當指定 Path 檔案或目錄被重新命名時,會發生這種情況。 |