Прочитать на английском

Поделиться через


FileSystemWatcher Класс

Определение

Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях каталога или файла в каталоге.

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
Наследование
FileSystemWatcher
Наследование
FileSystemWatcher
Атрибуты
Реализации

Примеры

В следующем примере создается FileSystemWatcher для watch каталога, указанного во время выполнения. Компоненту задано значение watch изменения времениLastWrite, LastAccess создания, удаления или переименования текстовых файлов в каталоге. При изменении, создании или удалении файла путь к файлу выводится в консоль. При переименовании файла в консоли выводится старый и новый пути.

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);
            }
        }
    }
}

Комментарии

Дополнительные сведения об этом API см. в разделе Дополнительные примечания API для FileSystemWatcher.

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

FileSystemWatcher()

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

FileSystemWatcher(String)

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

FileSystemWatcher(String, String)

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

Свойства

CanRaiseEvents

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

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

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

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

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

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

Получает или задает значение, определяющее, доступен ли данный компонент.

Events

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

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

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

Filters

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

IncludeSubdirectories

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

InternalBufferSize

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

NotifyFilter

Получает или задает тип отслеживаемых изменений.

Path

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

Site

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

SynchronizingObject

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

Методы

BeginInit()

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

CreateObjRef(Type)

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

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

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

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

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
WaitForChanged(WatcherChangeTypes)

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

WaitForChanged(WatcherChangeTypes, Int32)

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

WaitForChanged(WatcherChangeTypes, TimeSpan)

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

События

Changed

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

Created

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

Deleted

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

Disposed

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

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

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

Renamed

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

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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