Ler em inglês

Compartilhar via


FileSystemWatcher.Deleted Evento

Definição

Ocorre quando um arquivo ou diretório no Path especificado é excluído.

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

Tipo de evento

Atributos

Exemplos

O exemplo a seguir usa o Deleted evento para exibir o caminho do arquivo para o console sempre que o arquivo assistido é excluído.

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

Comentários

Algumas ocorrências comuns, como copiar ou mover um arquivo ou diretório, não correspondem diretamente a um evento, mas essas ocorrências fazem com que os eventos sejam gerados. Quando você copia um arquivo ou diretório, o sistema gera um Created evento no diretório para o qual o arquivo foi copiado, se esse diretório estiver sendo observado. Se o diretório do qual você copiou estava sendo observado por outra instância do FileSystemWatcher, nenhum evento seria gerado. Por exemplo, você cria duas instâncias de FileSystemWatcher. FileSystemWatcher1 é definido como watch "C:\Meus Documentos", e FileSystemWatcher2 está definido como watch "C:\Seus Documentos". Se você copiar um arquivo de "Meus Documentos" para "Seus Documentos", um Created evento será gerado por FileSystemWatcher2, mas nenhum evento será gerado para FileSystemWatcher1. Ao contrário da cópia, mover um arquivo ou diretório geraria dois eventos. No exemplo anterior, se você movesse um arquivo de "Meus Documentos" para "Seus Documentos", um Created evento seria gerado pelo FileSystemWatcher2 e um Deleted evento seria gerado pelo FileSystemWatcher1.

Observação

As operações comuns do sistema de arquivos podem gerar mais de um evento. Por exemplo, quando um arquivo é movido de um diretório para outro, vários OnChanged e alguns OnCreated eventos e OnDeleted podem ser gerados. Mover um arquivo é uma operação complexa que consiste em várias operações simples, gerando, portanto, vários eventos. Da mesma forma, alguns aplicativos (por exemplo, software antivírus) podem causar eventos adicionais do sistema de arquivos detectados pelo FileSystemWatcher.

Observação

A ordem na qual o Deleted evento é gerado em relação aos outros FileSystemWatcher eventos pode ser alterada quando a SynchronizingObject propriedade não nullé .

Aplica-se a

Produto Versões
.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

Confira também