C# が FileSystemWatcher コントロールを使用してファイル監視を実装する方法の具体的な例を共有する

黄舟
リリース: 2017-08-07 13:11:24
オリジナル
2204 人が閲覧しました

この記事では、C# で FileSystemWatcher コントロールを使用して実装されたファイル監視機能を主に紹介し、C# FileSystemWatcher コンポーネントの機能と、ファイルの変更を監視するための具体的な使用テクニックをサンプルの形で紹介します。この記事の例では、FileSystemWatcher コントロールを使用して実装された C# ファイル監視機能について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

FileSystemWatcher FileSystemWatcher コンポーネントを使用して、ファイル システムを監視し、ファイル システムの変更に対応できます。 FileSystemWatcher コンポーネントを使用すると、特定のファイルまたはディレクトリが作成、変更、または削除されたときにビジネス プロセスを迅速かつ簡単に開始できます。

たとえば、ユーザーのグループがサーバー上の共有ディレクトリに保存されているドキュメントで共同作業している場合、FileSystemWatcher コンポーネントを使用して、共有ディレクトリへの変更を監視するアプリケーションを作成できます。変更が検出されると、このコンポーネントは各ユーザーに電子メールで通知するプロセスを実行できます。

このコンポーネントは、ディレクトリ全体とその内容、または特定のディレクトリ内の特定のファイルまたはファイルのグループを監視するように構成できます。すべてのファイルの変更を監視するには、Filter プロパティを空の文字列 ("") に設定し、特定のファイルを監視するには、Filter プロパティをファイルのファイル名に設定する必要があります (たとえば、ファイル MyDoc を監視するには)。 .txt の場合は、Filter プロパティを「MyDoc.txt」に設定します)。また、特定のファイル タイプの変更を監視することもできます。たとえば、テキスト ファイルの変更を監視するには、Filter プロパティを「*.txt」に設定します。

【ヒント】隠しファイルを無視しないでください。

ディレクトリまたはファイルのさまざまな種類の変更を監視できます。たとえば、ファイルまたはディレクトリの属性、LastWrite 日時、またはサイズの変更を監視できます。これは、

FileSystemWatcher.NotifyFilter プロパティを NotifyFilters の値に設定することで実現できます。


ファイルやディレクトリの名前変更、削除、作成も監視します。たとえば、テキスト ファイルの名前変更を監視するには、Filter プロパティを "*.txt" に設定し、WaitForChanged メソッドを呼び出し、メソッド内の WatcherChangeTypes の値を Renamed に設定します。

以下の例。実行時に指定されたディレクトリを監視する FileSystemWatche コンポーネントを作成します。このコンポーネントは、LastWrite および LastAccess の時間変更、ディレクトリ内のテキスト ファイルの作成、削除、または名前変更を監視するように構成されています。ファイルが変更、作成、または削除されると、ファイルへのパスがコンソールに出力されます。ファイルの名前が変更されると、古いパスと新しいパスの両方がコンソールに出力されます。

Instance

FileSystemWatche コンポーネントを使用して、実行時に指定されたディレクトリを監視します:

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);
  }
}
ログイン後にコピー

以上がC# が FileSystemWatcher コントロールを使用してファイル監視を実装する方法の具体的な例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート