Partager via


Comment : configurer des instances du composant FileSystemWatcher

Mise à jour : novembre 2007

Vous devez configurer plusieurs propriétés pour vos instances de composant FileSystemWatcher afin de déterminer leur comportement. Ces propriétés servent à déterminer les répertoires et les sous-répertoires que l'instance du composant doit surveiller ainsi que les actions précises exécutées au sein de ces répertoires qui déclenchent des événements.

Spécification des répertoires à surveiller

Deux propriétés servent à déterminer les répertoires que le composant FileSystemWatcher doit surveiller : Path et IncludeSubdirectories.

Pour indiquer le chemin qualifié complet du répertoire racine à surveiller

  • Affectez comme valeur à la propriété Path une instance de composant existante, comme illustré dans l'exemple de code suivant :

    Dim MyWatcher As New System.IO.FileSystemWatcher()
    MyWatcher.Path = "c:\"
    
         System.IO.FileSystemWatcher MyWatcher = new System.IO.FileSystemWatcher();
            MyWatcher.Path = "c:\\";
    

    Le chemin d'accès du répertoire peut utiliser la notation standard (c:\répertoire) ou le format UNC (\\serveur\répertoire).

La propriété IncludeSubdirectories indique si les sous-répertoires du répertoire racine doivent également être surveillés. Si la valeur de la propriété est true, le composant surveille les mêmes modifications dans les sous-répertoires et le répertoire racine.

Définition des modifications à surveiller

En plus de spécifier les répertoires et les sous-répertoires à surveiller, vous pouvez indiquer les fichiers et types de modifications spécifiques que vous souhaitez surveiller. Vous déterminez en partie les modifications à surveiller en définissant des gestionnaires pour les seuls événements qui vous intéressent. Par exemple, si vous souhaitez n'être averti que de la création de fichiers, gérez uniquement l'événement Created. Toutefois, vous pouvez définir une série de propriétés qui limitent encore davantage les activités du composant.

Il est possible d'utiliser la propriété Filter pour spécifier un fichier particulier ou un modèle de concordance avec caractères génériques qui limite la surveillance du composant à des fichiers ou répertoires donnés du répertoire racine. Par exemple, si vous souhaitez surveiller la création de fichiers texte dans la racine, vous pouvez affecter la valeur "*.txt" à la propriété Filter et ensuite créer un gestionnaire pour l'événement Created. Vous pouvez définir le filtre avec la valeur de votre choix, y compris les extensions de fichiers valides. La valeur par défaut "*. *" retourne la totalité ; "" (chaîne vide) retourne aussi tous les fichiers ou répertoires. Toutefois, vous ne pouvez définir qu'une seule chaîne de filtrage à la fois. Si nécessaire, vous pouvez modifier le filtre après que le FileSystemWatcher a commencé à recevoir les événements.

Remarque :

Le composant FileSystemWatcher est conçu pour surveiller les modifications apportées au sein d'un répertoire, mais pas celles qui sont apportées aux attributs de celui-ci. Par exemple, si vous surveillez un répertoire appelé c:\MesProjets, le composant surveille les modifications survenues au sein du répertoire, mais non celles qui sont apportées au répertoire lui-même.

Vous pouvez également utiliser la propriété NotifyFilter pour limiter davantage les modifications qui déclenchent une réaction. Vous pouvez définir la propriété NotifyFilter de sorte qu'elle surveille les modifications apportées aux noms de répertoires, aux noms de fichiers ou aux deux. Par ailleurs, la propriété NotifyFilter contient une série de valeurs qui limitent l'événement Changed. L'événement Changed est susceptible de générer un grand nombre d'événements puisqu'il déclenche une réaction chaque fois qu'une modification est apportée au fichier en question. Certaines opérations standard comme la copie et le déplacement de fichiers génèrent plusieurs événements de modification de fichier dans la mesure où divers attributs tels que la taille, la dernière écriture et le dernier accès changent.

La propriété NotifyFilter limite le nombre de modifications de fichier ou de répertoire pour lesquelles l'instance du composant déclenche des événements. Vous pouvez paramétrer votre composant afin qu'il déclenche des événements uniquement si le nom d'un fichier ou d'un répertoire change, si les attributs d'un élément du répertoire principal sont modifiés, si l'heure de dernière écriture ou du dernier accès varie ou si les droits de sécurité liés à l'accès d'un fichier ou d'un répertoire changent. Ces valeurs font toutes partie de l'énumération NotifyFilters. Vous pouvez définir plusieurs modifications à surveiller à l'aide d'un opérateur BitOr (pour Visual Basic) ou | (pour Visual C#), comme indiqué dans l'exemple ci-dessous.

Remarque :

Vous devez affecter à la propriété EnableRaisingEvents la valeur true afin que le composant FileSystemWatcher commence à surveiller les modifications.

Pour configurer une instance du composant FileSystemWatcher

  1. Créez une instance du composant FileSystemWatcher. Pour plus d'informations, consultez Comment : créer des instances du composant FileSystemWatcher.

  2. Affectez à la propriété Path le chemin qualifié complet du répertoire racine à surveiller.

    Conseil :

    Vous pouvez entrer ce chemin en tant que chemin d'accès au fichier standard ou en tant que chemin d'accès UNC.

  3. Définissez, le cas échéant, les propriétés facultatives pour votre instance.

    Scénario

    Propriété

    Valeur

    Surveillance des modifications apportées à un nom de fichier ou de sous-répertoire spécifique dans la racine

    Filter

    Expression de filtre générique qui limite les activités de surveillance de l'instance

    Surveillance des modifications survenues au sein des sous-répertoires du répertoire racine

    IncludeSubdirectories

    true ou false

    Surveillance uniquement de modifications spécifiques apportées à un fichier ou à un sous-répertoire lors de la gestion des événements Changed, Renamed, Deleted ou Created

    NotifyFilter

    N'importe laquelle des valeurs disponibles dans l'énumération NotifyFilters

  4. Activez votre instance de composant en affectant la valeur true à la propriété EnableRaisingEvents.

    Supposons, par exemple, que vous souhaitiez créer une instance FileSystemWatcher qui surveille la création de nouveaux fichiers .txt dans un répertoire de dépôt appelé "états". Vous souhaitez par ailleurs surveiller les modifications apportées à des états existants qui sont réexécutés dynamiquement chaque fois que les données changent. Votre composant peut alors être paramétré comme suit :

    ' This needs to be declared in a place where it will not go out of scope.
    ' For example, it would be a class variable in a form class.
    Dim MyWatcher As New System.IO.FileSystemWatcher()
    ' This code would go in one of the initialization methods of the class.
    MyWatcher.Path = "c:\"
    ' Watch only for changes to *.txt files.
    MyWatcher.Filter = "*.txt"
    MyWatcher.IncludeSubdirectories = False
    ' Filter for Last Write changes.
    MyWatcher.NotifyFilter = System.IO.NotifyFilters.LastWrite
    ' Example of watching more than one type of change.
    MyWatcher.NotifyFilter = _
       System.IO.NotifyFilters.LastAccess Or System.IO.NotifyFilters.Size
    ' Enable the component to begin watching for changes.
    MyWatcher.EnableRaisingEvents = True
    
         // This needs to be declared in a place where it will not go out of scope.
            // For example, it would be a class variable in a form class.
            System.IO.FileSystemWatcher MyWatcher = new System.IO.FileSystemWatcher();
            // This code would go in one of the initialization methods of the class.
            MyWatcher.Path = "c:\\";
            // Watch only for changes to *.txt files.
            MyWatcher.Filter = "*.txt";
            MyWatcher.IncludeSubdirectories = false;
            // Enable the component to begin watching for changes.
            MyWatcher.EnableRaisingEvents = true;
            // Filter for Last Write changes.
            MyWatcher.NotifyFilter = System.IO.NotifyFilters.LastWrite;
            // Example of watching more than one type of change.
            MyWatcher.NotifyFilter =
               System.IO.NotifyFilters.LastWrite | System.IO.NotifyFilters.Size;
    

Voir aussi

Tâches

Comment : créer des instances du composant FileSystemWatcher

Concepts

Introduction à la surveillance des événements de système de fichiers