C# FileSystemWatcher 디렉토리, 파일 변경 모니터링



이번 포스트에서는 System.IO 네임스페이스에 위치하는 FileSystemWatcher 클래스에 대해서 알아 보도록 하겠다.

    FileSystemWatcher watch = null;
    watch = new FileSystemWatcher(Path.Combine(Environment.CurrentDirectory"folder"), "*.DLL");   //실행되는 폴더의 folder이라는 하위 폴더에서 DLL 파일만 변경에 대해서 모니터링 세팅
    watch.EnableRaisingEvents = true;   //이벤트 활성화 시킴
    watch.NotifyFilter = NotifyFilters.CreationTime | NotifyFilters.Attributes | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size;
 
    watch.Changed += (se=> { Console.WriteLine("Changed"); };
    watch.Created += (se=> { Console.WriteLine("Created"); };
    watch.Deleted += (se=> { Console.WriteLine("Deleted"); };
    watch.Renamed += (se=> { Console.WriteLine("Renamed"); };
 
    Console.ReadKey();

위와 코드를 실행하고 'folder'폴더 안에 있는 dll파일을 추가 하거나 수정하면 해당 이벤트가 


전체적으로 어렵지 않게 사용할 수 있어서  주석과 직관적인 코드로 설명을 대체 하도록 하겠다.


아래는 NotifyFilter의 속성에 대한 설명이다.

멤버이름 설명
Attributes 파일 또는 폴더의 특성
CreateTime 파일 또는 폴더를 만든 시간
DirectoryName 디렉토리 이름
FileName 파일이름
LastAccess 파일 또는 폴더를 마지막으로 열었던 날짜
LastWrite 파일 또는 폴더에 마지막으로 기록된 날짜
Security 파일 또는 폴더의 보안 설정
Size 파일 또는 폴더의 크기


Tip!

NotifyFilter을 적절하게 세팅하고 발생하는 이벤트도 관리해서 중복되는 이벤트가 발생하지 않도록 해야 하며 중복 발생에 대한 처리도 해서 실질적으로 사용해야 하겠다.


+ Recent posts