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

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


FileSystemWatcher.Deleted Событие

Определение

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

public event System.IO.FileSystemEventHandler? Deleted;
public event System.IO.FileSystemEventHandler Deleted;
[System.IO.IODescription("FSW_Deleted")]
public event System.IO.FileSystemEventHandler Deleted;

Тип события

Атрибуты

Примеры

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

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

Комментарии

Некоторые распространенные события, такие как копирование или перемещение файла или каталога, не соответствуют непосредственно событию, но они вызывают события. При копировании файла или каталога система вызывает Created событие в каталоге, в который был скопирован файл, если этот каталог просматривается. Если каталог, из которого вы скопировали, отслеживался другим экземпляром FileSystemWatcher, событие не будет вызвано. Например, вы создаете два экземпляра FileSystemWatcher. FileSystemWatcher1 имеет значение watch "C:\My Documents", а FileSystemWatcher2 — watch "C:\Your Documents". Если скопировать файл из раздела "Мои документы" в раздел "Ваши документы", Created fileSystemWatcher2 вызовет событие, но для FileSystemWatcher1 событие не вызывается. В отличие от копирования, перемещение файла или каталога приведет к возникновению двух событий. В предыдущем примере, если вы переместили файл из "Мои документы" в "Ваши документы", Created событие будет вызвано FileSystemWatcher2, а Deleted событие будет вызвано FileSystemWatcher1.

Примечание

Распространенные операции файловой системы могут вызывать несколько событий. Например, при перемещении файла из одного каталога в другой могут возникать несколько OnChanged и некоторые OnCreated события и OnDeleted . Перемещение файла — это сложная операция, которая состоит из нескольких простых операций, поэтому вызывает несколько событий. Аналогичным образом некоторые приложения (например, антивирусная программа) могут вызывать дополнительные события файловой системы, обнаруженные .FileSystemWatcher

Примечание

Порядок, в котором Deleted возникает событие по отношению к другим FileSystemWatcher событиям, может измениться, SynchronizingObject если свойство не nullимеет значения .

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

Продукт Версии
.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

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