Classe System.IO.FileSystemWatcher

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

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 wild carte s (« *.* »). 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é sur « MyDoc.txt ». 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é sur « *.txt ».

Il existe plusieurs types de modifications que vous pouvez observer dans un répertoire ou un fichier. Par exemple, vous pouvez surveiller les modifications apportées Attributes, la date et l’heure LastWrite , ou les Size 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. L’augmentation de la taille de la mémoire tampon avec la InternalBufferSize propriété est coûteuse, car elle provient de la mémoire non paginée qui ne peut pas être permutée sur le disque, de sorte que la mémoire tampon reste suffisamment petite pour ne pas manquer les événements de modification de fichier. Pour éviter un dépassement de mémoire tampon, utilisez les propriétés et IncludeSubdirectories les NotifyFilter propriétés pour 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.

Considérations relatives à l’utilisation de la FileSystemWatcher classe :

  • Les fichiers masqués ne sont pas ignorés.
  • Dans certains systèmes, FileSystemWatcher les rapports changent dans les fichiers à l’aide du format de nom de fichier 8.3 court. Par exemple, une modification de « LongFileName.LongExtension » peut être signalée comme « LongFil~. Lon ».
  • Cette classe contient une demande de liaison et une demande d’héritage au niveau de la classe qui s’applique à tous les membres. A SecurityException est levée lorsque l’appelant immédiat ou la classe dérivée n’a pas d’autorisation de confiance totale. Pour plus d’informations sur les demandes de sécurité, consultez Demandes de liaison.
  • 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 FileSystemWatcher l’objet 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 et fournissez OnChanged des OnRenamed méthodes de gestionnaire d’événements, comme suggéré dans le tableau suivant.

Gestionnaire d’événements Événements gérés Performances
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.

Tailles des événements et 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 et certains OnChangedOnCreated événements OnDeleted peuvent être déclenché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.
  • Les FileSystemWatcher disques peuvent regarder tant qu’ils ne sont pas basculés ou supprimés. Il FileSystemWatcher ne déclenche pas d’événements pour les DISQUES CD et les DVD, car 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 événement peut manquer 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.