Sdílet prostřednictvím


FileSystemWatcher.Deleted Událost

Definice

Nastane, když se odstraní soubor nebo adresář v zadaném adresáři Path .

public:
 event System::IO::FileSystemEventHandler ^ Deleted;
public event System.IO.FileSystemEventHandler? Deleted;
public event System.IO.FileSystemEventHandler Deleted;
[System.IO.IODescription("FSW_Deleted")]
public event System.IO.FileSystemEventHandler Deleted;
member this.Deleted : System.IO.FileSystemEventHandler 
[<System.IO.IODescription("FSW_Deleted")>]
member this.Deleted : System.IO.FileSystemEventHandler 
Public Custom Event Deleted As FileSystemEventHandler 

Event Type

Atributy

Příklady

Následující příklad používá Deleted událost k zobrazení cesty k souboru ke konzole při každém odstranění sledovaného souboru.

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

Poznámky

Některé běžné výskyty, například kopírování nebo přesunutí souboru nebo adresáře, neodpovídají přímo události, ale tyto výskyty způsobují vyvolání událostí. Při kopírování souboru nebo adresáře systém vyvolá Created událost v adresáři, do kterého byl soubor zkopírován, pokud se tento adresář sleduje. Pokud byl adresář, ze kterého jste zkopírovali, sledovaný jinou instancí FileSystemWatcher, nebyla vyvolána žádná událost. Například vytvoříte dvě instance FileSystemWatcher. FileSystemWatcher1 je nastavený tak, aby sledoval "C:\My Documents" a FileSystemWatcher2 je nastavený na sledování "C:\Your Documents". Pokud zkopírujete soubor z části Dokumenty do složky Vaše dokumenty, Created vyvolá se událost FileSystemWatcher2, ale pro FileSystemWatcher1 se nevyvolá žádná událost. Na rozdíl od kopírování by přesunutí souboru nebo adresáře vyvolalo dvě události. Pokud jste z předchozího příkladu přesunuli soubor z "Dokumenty" do "Vaše dokumenty", Created událost by byla vyvolána FileSystemWatcher2 a Deleted událost by byla vyvolána FileSystemWatcher1.

Poznámka:

Běžné operace systému souborů můžou vyvolat více než jednu událost. Například když se soubor přesune z jednoho adresáře do jiného, může dojít k vyvolání několika OnChanged událostí, některých OnCreated událostí a OnDeleted událostí. Přesunutí souboru je složitá operace, která se skládá z několika jednoduchých operací, a proto vyvolává více událostí. Podobně některé aplikace (například antivirový software) mohou způsobit další události systému souborů, které mohou být detekovány FileSystemWatcher.

Poznámka:

Pořadí, ve kterém Deleted je událost vyvolána ve vztahu k ostatním FileSystemWatcher událostem, se může změnit, pokud SynchronizingObject vlastnost není null.

Platí pro

Viz také