FileSystemWatcher.Deleted Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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.