Maison  >  Article  >  développement back-end  >  Partager des exemples spécifiques de la façon dont C# utilise le contrôle FileSystemWatcher pour implémenter la surveillance des fichiers

Partager des exemples spécifiques de la façon dont C# utilise le contrôle FileSystemWatcher pour implémenter la surveillance des fichiers

黄舟
黄舟original
2017-08-07 13:11:242199parcourir

Cet article présente principalement la fonction de surveillance des fichiers implémentée par C# à l'aide du contrôle FileSystemWatcher. Il analyse les fonctions du composant C# FileSystemWatcher et les techniques d'utilisation spécifiques pour surveiller les modifications des fichiers sous forme d'exemples.

L'exemple de cet article décrit la fonction de surveillance de fichiers implémentée par C# à l'aide du contrôle FileSystemWatcher. Partagez-le avec tout le monde pour référence, comme suit :

FileSystemWatcher

Vous pouvez utiliser le composant FileSystemWatcher pour surveiller le système de fichiers et apporter des modifications. à la réaction du système de fichiers. En utilisant le composant FileSystemWatcher, vous pouvez démarrer rapidement et facilement des processus métier lorsqu'un fichier ou un répertoire spécifique est créé, modifié ou supprimé.

Par exemple, si un groupe d'utilisateurs collabore sur un document stocké dans un répertoire partagé sur le serveur, vous pouvez utiliser le composant FileSystemWatcher pour écrire une application permettant de surveiller les modifications apportées au répertoire partagé. Lorsqu'un changement est détecté, ce composant peut exécuter un processus pour avertir chaque utilisateur par e-mail.

Le composant peut être configuré pour surveiller un répertoire entier et son contenu, ou un fichier ou un groupe de fichiers spécifique dans un répertoire spécifique. Pour surveiller les modifications dans tous les fichiers, la propriété Filter doit être définie sur une chaîne vide (""); pour surveiller un fichier spécifique, la propriété Filter doit être définie sur le nom du fichier (par exemple, pour surveiller le fichier MyDoc .txt, définissez la propriété Filter sur "MyDoc.txt"); vous pouvez également surveiller les modifications dans des types de fichiers spécifiques, par exemple, pour surveiller les modifications dans les fichiers texte, définissez la propriété Filter sur "*.txt".

【Astuce】N'ignorez pas les fichiers cachés.

peut surveiller plusieurs types de modifications dans des répertoires ou des fichiers. Par exemple, vous pouvez surveiller les attributs d'un fichier ou d'un répertoire, la date et l'heure de LastWrite ou les modifications de taille. Cela peut être accompli en définissant la propriété
FileSystemWatcher.NotifyFilter sur une valeur dans NotifyFilters.

Vous pouvez également surveiller les fichiers ou répertoires pour les renommer, les supprimer ou les créer. Par exemple, pour surveiller le changement de nom des fichiers texte, définissez la propriété Filter sur « *.txt », appelez une méthode WaitForChanged et définissez la valeur de WatcherChangeTypes dans la méthode sur Renamed.

Ce qui suit est un exemple. Créez un composant FileSystemWatche pour surveiller le répertoire spécifié au moment de l'exécution. Le composant est configuré pour surveiller les changements d'heure de LastWrite et LastAccess, ainsi que la création, la suppression ou le renommage de fichiers texte dans le répertoire. Si le fichier est modifié, créé ou supprimé, le chemin d'accès au fichier est imprimé sur la console. Lorsqu'un fichier est renommé, l'ancien et le nouveau chemin sont imprimés sur la console.

Instance Utilisez le composant FileSystemWatche pour surveiller le répertoire spécifié lors de l'exécution :


using System;
using System.IO;
public class watcher 
{
  public static void Main(string[] args) 
  {
    //如果没有指定目录,则退出程序
    if(args.Length!=1) 
    {
      //显示调用程序的正确方法
      Console.WriteLine("usage:Watcher.exe(directory)");
      return;
    }
    //创建一个新的FileSystemWatcher并设置其属性
    FileSystemWatcher watcher=new FileSystemWatcher();
    watcher.Path=args[O];
    /*监视LastAcceSS和LastWrite时间的更改以及文件或目录的重命名*/
    watcher.NotifyFilter=NotifyFilters.LastAccess | NotifyFilters.LastWrite |
           NotifyFilters.FileName | NotifyFilters.DirectoryName;
    //只监视文本文件
    watcher.Filter="*.txt";
    //添加事件句柄
    //当由FileSystemWatcher所指定的路径中的文件或目录的
    //大小、系统属性、最后写时间、最后访问时间或安全权限
    //发生更改时,更改事件就会发生
    watcher.Changed +=new FileSystemEventHandler(OnChanged);
    //由FileSystemWatcher所指定的路径中文件或目录被创建时,创建事件就会发生
    watcher.Created +=new FileSystemEventHandler(OnChanged);
    //当由FileSystemWatcher所指定的路径中文件或目录被删除时,删除事件就会发生
    watcher.Deleted +=new FileSystemEventHandler(OnChanged) ;
    //当由FileSystemWatcher所指定的路径中文件或目录被重命名时,重命名事件就会发生
    watcher.Renamed +=new RenamedEventHandler(OnRenamed);
    //开始监视
    watcher.EnableRaisingEvents=true;
    //等待用户退出程序
    Console.WriteLine("Press\'q\' to quit the sample.");
    while(Console.Read()!='q');
  }
  //定义事件处理程序
  public static void OnChanged(object sender,FileSystemEventArgs e) 
  {
    //指定当文件被更改、创建或删除时要做的事
    Console.WriteLine("file:"+e.FullPath+""+e.ChangeType);
  }
  public static void OnRenamed(object sender,RenamedEventArgs e) 
  {
    //指定当文件被重命名时发生的动作
    Console.WriteLine("Fi]e:{0} renamed to{1}",e.OldFullPath,e.FullPath);
  }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn