FileSystemWatcher Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Écoute les notifications de modification du système de fichiers et déclenche des événements lorsqu’un répertoire ou un fichier dans un répertoire change.
public ref class FileSystemWatcher : System::ComponentModel::Component, System::ComponentModel::ISupportInitialize
public ref class FileSystemWatcher : IDisposable
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
type FileSystemWatcher = class
inherit Component
interface ISupportInitialize
type FileSystemWatcher = class
interface IDisposable
[<System.IO.IODescription("FileSystemWatcherDesc")>]
type FileSystemWatcher = class
inherit Component
interface ISupportInitialize
Public Class FileSystemWatcher
Inherits Component
Implements ISupportInitialize
Public Class FileSystemWatcher
Implements IDisposable
- Héritage
- Héritage
-
FileSystemWatcher
- Attributs
- Implémente
Exemples
L’exemple suivant crée un FileSystemWatcher répertoire pour regarder le répertoire spécifié au moment de l’exécution. Le composant est défini pour surveiller les modifications dans LastWrite le LastAccess temps, la création, la suppression ou le renommage des fichiers texte dans le répertoire. Si un fichier est modifié, créé ou supprimé, le chemin d’accès au fichier s’imprime dans la console. Lorsqu’un fichier est renommé, les anciens chemins d’accès s’impriment dans la console.
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
Remarques
Permet FileSystemWatcher de surveiller les modifications dans un répertoire spécifié. Vous pouvez surveiller les modifications apportées aux fichiers et sous-répertoires du répertoire spécifié. Vous pouvez créer un composant pour surveiller les fichiers sur un ordinateur local, un lecteur réseau ou un ordinateur distant.
Pour surveiller les modifications apportées à tous les fichiers, définissez la Filter propriété sur une chaîne vide ("") ou utilisez des caractères génériques ("*.*"). Pour surveiller un fichier spécifique, définissez la Filter propriété sur le nom du fichier. Par exemple, pour surveiller les modifications apportées au fichier MyDoc.txt, définissez la Filter propriété "MyDoc.txt"sur . Vous pouvez également surveiller les modifications apportées à un certain type de fichier. Par exemple, pour surveiller les modifications apportées aux fichiers texte, définissez la Filter propriété "*.txt"sur .
Il existe plusieurs types de modifications que vous pouvez observer dans un répertoire ou un fichier. Par exemple, vous pouvez surveiller les modifications de Attributes, la date et l’heure LastWrite, ou les éléments Size des fichiers ou répertoires. Pour ce faire, définissez la NotifyFilter propriété sur l’une des NotifyFilters valeurs. Pour plus d’informations sur le type de modifications que vous pouvez observer, consultez NotifyFilters.
Vous pouvez surveiller le changement de nom, la suppression ou la création de fichiers ou de répertoires. Par exemple, pour surveiller le changement de nom des fichiers texte, définissez la Filter propriété sur « *.txt» et appelez la WaitForChanged méthode avec un Renamed paramètre spécifié.
Le système d’exploitation Windows avertit votre composant des modifications de fichier dans une mémoire tampon créée par le FileSystemWatcher. S’il existe de nombreuses modifications dans un court délai, la mémoire tampon peut déborder. Cela entraîne la perte du suivi des modifications dans le répertoire et ne fournit qu’une notification globale. Augmenter la taille du tampon avec la propriété InternalBufferSize est coûteux, car elle provient de la mémoire non paginée qui ne peut pas être échangée sur le disque. Gardez donc le tampon suffisamment petit mais assez grand pour ne pas manquer d’événements de modification de fichier. Pour éviter un dépassement de mémoire tampon, utilisez les propriétés NotifyFilter et IncludeSubdirectories afin de filtrer les notifications de modification indésirables.
Pour obtenir la liste des valeurs de propriété initiales d’une instance de FileSystemWatcher, consultez le FileSystemWatcher constructeur.
Tenez compte des faits suivants lorsque vous utilisez la FileSystemWatcher classe :
- Les fichiers masqués ne sont pas ignorés.
- Dans certains systèmes, FileSystemWatcher signale les modifications apportées aux fichiers en utilisant le format court 8.3 pour les noms de fichiers. Par exemple, une modification de « LongFileName.LongExtension » peut être signalée comme « LongFil~. Lon".
- La taille maximale que vous pouvez définir pour la propriété pour surveiller InternalBufferSize un répertoire sur le réseau est de 64 Ko.
Copier et déplacer des dossiers
Le système d’exploitation et l'objet FileSystemWatcher interprètent une action couper-coller ou une action de déplacement en tant qu’action de renommage pour un dossier et son contenu. Si vous coupez et collez un dossier contenant des fichiers dans un dossier surveillé, l’objet FileSystemWatcher signale uniquement le dossier comme nouveau, mais pas son contenu, car ils sont essentiellement renommés uniquement.
Pour être averti que le contenu des dossiers a été déplacé ou copié dans un dossier surveillé, fournissez les méthodes de gestionnaire d’événements OnChanged et OnRenamed comme suggéré dans le tableau suivant.
| Gestionnaire d'événements | Événements gérés | Exécute |
|---|---|---|
| OnChanged | Changed, , CreatedDeleted | Signaler les modifications apportées aux attributs de fichier, aux fichiers créés et aux fichiers supprimés. |
| OnRenamed | Renamed | Répertoriez les anciens et nouveaux chemins d’accès des fichiers et dossiers renommés, en développant de manière récursive si nécessaire. |
Événements et tailles des mémoires tampons
Notez que plusieurs facteurs peuvent affecter les événements de modification du système de fichiers déclenchés, comme décrit par les éléments suivants :
- Les opérations courantes du système de fichiers peuvent déclencher plusieurs événements. Par exemple, lorsqu’un fichier est déplacé d’un répertoire à un autre, plusieurs événements OnChanged et certains événements OnCreated et OnDeleted peuvent être générés. Le déplacement d’un fichier est une opération complexe qui se compose de plusieurs opérations simples, ce qui déclenche plusieurs événements. De même, certaines applications (par exemple, les logiciels antivirus) peuvent entraîner des événements de système de fichiers supplémentaires détectés par FileSystemWatcher.
- Le FileSystemWatcher peut surveiller les disques tant qu’ils ne sont pas basculés ou supprimés. Le FileSystemWatcher n’organise pas d’événements pour les CD et les DVD, parce que les horodatages et les propriétés ne peuvent pas changer. Les ordinateurs distants doivent disposer de l’une des plateformes requises installées pour que le composant fonctionne correctement.
Notez qu’un FileSystemWatcher peut manquer un événement lorsque la taille de la mémoire tampon est dépassée. Pour éviter les événements manquants, suivez ces instructions :
- Augmentez la taille de la mémoire tampon en définissant la InternalBufferSize propriété.
- Évitez de surveiller les fichiers avec des noms de fichiers longs, car un nom de fichier long contribue à remplir la mémoire tampon. Envisagez de renommer ces fichiers à l’aide de noms plus courts.
- Conservez votre code de gestion des événements aussi court que possible.
Constructeurs
| Nom | Description |
|---|---|
| FileSystemWatcher() |
Initialise une nouvelle instance de la classe FileSystemWatcher. |
| FileSystemWatcher(String, String) |
Initialise une nouvelle instance de la FileSystemWatcher classe, en fonction du répertoire et du type de fichiers spécifiés à surveiller. |
| FileSystemWatcher(String) |
Initialise une nouvelle instance de la FileSystemWatcher classe, en fonction du répertoire spécifié à surveiller. |
Propriétés
| Nom | Description |
|---|---|
| CanRaiseEvents |
Obtient une valeur indiquant si le composant peut déclencher un événement. (Hérité de Component) |
| Container |
Obtient le IContainer fichier qui contient le Component. (Hérité de Component) |
| DesignMode |
Obtient une valeur qui indique si la Component valeur est actuellement en mode création. (Hérité de Component) |
| EnableRaisingEvents |
Obtient ou définit une valeur indiquant si le composant est activé. |
| Events |
Obtient la liste des gestionnaires d’événements qui sont attachés à ce Component. (Hérité de Component) |
| Filter |
Obtient ou définit la chaîne de filtre utilisée pour déterminer les fichiers surveillés dans un répertoire. |
| Filters |
Obtient la collection de tous les filtres utilisés pour déterminer les fichiers analysés dans un répertoire. |
| IncludeSubdirectories |
Obtient ou définit une valeur indiquant si les sous-répertoires dans le chemin spécifié doivent être surveillés. |
| InternalBufferSize |
Obtient ou définit la taille (en octets) de la mémoire tampon interne. |
| NotifyFilter |
Obtient ou définit le type de modifications à surveiller. |
| Path |
Obtient ou définit le chemin d’accès du répertoire à surveiller. |
| Site |
Obtient ou définit un ISite pour le FileSystemWatcher. |
| SynchronizingObject |
Obtient ou définit l’objet utilisé pour marshaler les appels du gestionnaire d’événements émis suite à une modification d’annuaire. |
Méthodes
| Nom | Description |
|---|---|
| BeginInit() |
Commence l’initialisation d’un FileSystemWatcher formulaire ou utilisé par un autre composant. L’initialisation se produit au moment de l’exécution. |
| CreateObjRef(Type) |
Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant. (Hérité de MarshalByRefObject) |
| Dispose() |
Libère les ressources non managées utilisées par le FileSystemWatcher. |
| Dispose() |
Libère toutes les ressources utilisées par le Component. (Hérité de Component) |
| Dispose(Boolean) |
Libère les ressources non managées utilisées par les FileSystemWatcher ressources gérées et libère éventuellement les ressources managées. |
| EndInit() |
Termine l’initialisation d’un FileSystemWatcher formulaire ou utilisé par un autre composant. L’initialisation se produit au moment de l’exécution. |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetLifetimeService() |
Obsolète.
Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| GetService(Type) |
Retourne un objet qui représente un service fourni par le Component ou par son Container. (Hérité de Component) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| InitializeLifetimeService() |
Obsolète.
Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| MemberwiseClone(Boolean) |
Crée une copie superficielle de l’objet actuel MarshalByRefObject . (Hérité de MarshalByRefObject) |
| OnChanged(FileSystemEventArgs) |
Déclenche l’événement Changed. |
| OnCreated(FileSystemEventArgs) |
Déclenche l’événement Created. |
| OnDeleted(FileSystemEventArgs) |
Déclenche l’événement Deleted. |
| OnError(ErrorEventArgs) |
Déclenche l’événement Error. |
| OnRenamed(RenamedEventArgs) |
Déclenche l’événement Renamed. |
| ToString() |
Retourne un String nom contenant le nom du Component, le cas échéant. Cette méthode ne doit pas être remplacée. (Hérité de Component) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| WaitForChanged(WatcherChangeTypes, Int32) |
Méthode synchrone qui retourne une structure qui contient des informations spécifiques sur la modification qui s’est produite, en fonction du type de modification que vous souhaitez surveiller et de l’heure (en millisecondes) à attendre avant l’expiration du délai d’attente. |
| WaitForChanged(WatcherChangeTypes, TimeSpan) |
Retourne de façon synchrone une structure qui contient des informations spécifiques sur la modification qui s’est produite, en fonction du type de modification à surveiller. |
| WaitForChanged(WatcherChangeTypes) |
Méthode synchrone qui retourne une structure qui contient des informations spécifiques sur la modification qui s’est produite, en fonction du type de modification que vous souhaitez surveiller. |
Événements
| Nom | Description |
|---|---|
| Changed |
Se produit lorsqu’un fichier ou un répertoire dans le fichier spécifié Path est modifié. |
| Created |
Se produit lorsqu’un fichier ou un répertoire dans le fichier spécifié Path est créé. |
| Deleted |
Se produit lorsqu’un fichier ou un répertoire dans le fichier spécifié Path est supprimé. |
| Disposed |
Se produit lorsque le composant est supprimé par un appel à la Dispose() méthode. (Hérité de Component) |
| Error |
Se produit lorsque l’instance de n’est pas en mesure de FileSystemWatcher continuer à surveiller les modifications ou lorsque la mémoire tampon interne dépasse. |
| Renamed |
Se produit lorsqu’un fichier ou un répertoire dans le fichier spécifié Path est renommé. |