>  기사  >  백엔드 개발  >  C#이 FileSystemWatcher 컨트롤을 사용하여 파일 모니터링을 구현하는 방법에 대한 구체적인 예 공유

C#이 FileSystemWatcher 컨트롤을 사용하여 파일 모니터링을 구현하는 방법에 대한 구체적인 예 공유

黄舟
黄舟원래의
2017-08-07 13:11:242159검색

이 글에서는 주로 FileSystemWatcher 컨트롤을 사용하여 C#에서 구현한 파일 모니터링 기능을 소개합니다. C# FileSystemWatcher 컴포넌트의 기능을 분석하고 파일 변경 사항을 모니터링하는 구체적인 사용 방법을 예제 형식으로 설명합니다.

이 문서의 예제에서는 FileSystemWatcher 컨트롤을 사용하여 구현된 C# 파일 모니터링 기능을 설명합니다. 참조용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

FileSystemWatcher

FileSystemWatcher 구성 요소를 사용하여 파일 시스템을 모니터링하고 파일 시스템의 변경 사항에 대응할 수 있습니다. FileSystemWatcher 구성 요소를 사용하면 특정 파일이나 디렉터리가 생성, 수정 또는 삭제될 때 비즈니스 프로세스를 빠르고 쉽게 시작할 수 있습니다.

예를 들어, 사용자 그룹이 서버의 공유 디렉터리에 저장된 문서를 공동 작업하는 경우 FileSystemWatcher 구성 요소를 사용하여 공유 디렉터리의 변경 사항을 모니터링하는 애플리케이션을 작성할 수 있습니다. 변경 사항이 감지되면 이 구성 요소는 프로세스를 실행하여 이메일을 통해 각 사용자에게 알릴 수 있습니다.

전체 디렉터리와 그 내용, 특정 디렉터리에 있는 특정 파일이나 파일 그룹을 모니터링하도록 구성 요소를 구성할 수 있습니다. 모든 파일의 변경 사항을 모니터링하려면 특정 파일을 모니터링하려면 Filter 속성을 빈 문자열("")로 설정해야 하며, Filter 속성은 파일의 파일 이름으로 설정해야 합니다(예: MyDoc 파일을 모니터링하려면). .txt의 경우 필터 속성을 "MyDoc.txt"로 설정), 특정 파일 형식의 변경 사항을 모니터링할 수도 있습니다. 예를 들어 텍스트 파일의 변경 사항을 모니터링하려면 필터 속성을 "*.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.