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 см. в дополнительных примечаниях API для FileSystemWatcher.

Конструкторы

Имя Описание
FileSystemWatcher()

Инициализирует новый экземпляр класса FileSystemWatcher.

FileSystemWatcher(String, String)

Инициализирует новый экземпляр FileSystemWatcher класса, учитывая указанный каталог и тип файлов для отслеживания.

FileSystemWatcher(String)

Инициализирует новый экземпляр FileSystemWatcher класса, учитывая указанный каталог для мониторинга.

Свойства

Имя Описание
CanRaiseEvents

Возвращает значение, указывающее, может ли компонент вызвать событие.

(Унаследовано от Component)
Container

Возвращает объект IContainer , содержащий Componentобъект .

(Унаследовано от Component)
DesignMode

Возвращает значение, указывающее, находится ли текущий Component режим разработки.

(Унаследовано от Component)
EnableRaisingEvents

Возвращает или задает значение, указывающее, включен ли компонент.

Events

Возвращает список обработчиков событий, подключенных к этому Component.

(Унаследовано от Component)
Filter

Возвращает или задает строку фильтра, используемую для определения файлов, отслеживаемых в каталоге.

IncludeSubdirectories

Возвращает или задает значение, указывающее, следует ли отслеживать вложенные каталоги в указанном пути.

InternalBufferSize

Возвращает или задает размер (в байтах) внутреннего буфера.

NotifyFilter

Возвращает или задает тип изменений для отслеживания.

Path

Возвращает или задает путь к каталогу для просмотра.

Site

Возвращает или задает ISite для объекта FileSystemWatcher.

SynchronizingObject

Возвращает или задает объект, используемый для маршалирования вызовов обработчика событий, выданных в результате изменения каталога.

Методы

Имя Описание
BeginInit()

Начинает инициализацию используемого FileSystemWatcher в форме или используемого другим компонентом. Инициализация происходит во время выполнения.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает все ресурсы, используемые параметром Component.

(Унаследовано от Component)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые FileSystemWatcher и при необходимости освобождает управляемые ресурсы.

EndInit()

Завершает инициализацию используемого 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)

Синхронный метод, возвращающий структуру, содержащую определенную информацию об изменениях, учитывая тип изменения, которое требуется отслеживать.

События

Имя Описание
Changed

Происходит при изменении файла или каталога в указанном параметре Path .

Created

Происходит при создании файла или каталога в указанном каталоге Path .

Deleted

Происходит при удалении файла или каталога в указанном объекте Path .

Disposed

Происходит при удалении компонента вызовом Dispose() метода.

(Унаследовано от Component)
Error

Происходит, когда экземпляр FileSystemWatcher не может продолжать мониторинг изменений или когда внутренний буфер переполнен.

Renamed

Происходит при переименовании файла или каталога в указанном объекте Path .

Применяется к

См. также раздел