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 += (s, e) => { Console.WriteLine("Changed"); }; watch.Created += (s, e) => { Console.WriteLine("Created"); }; watch.Deleted += (s, e) => { Console.WriteLine("Deleted"); }; watch.Renamed += (s, e) => { Console.WriteLine("Renamed"); }; Console.ReadKey();
위와 코드를 실행하고 'folder'폴더 안에 있는 dll파일을 추가 하거나 수정하면 해당 이벤트가
전체적으로 어렵지 않게 사용할 수 있어서 주석과 직관적인 코드로 설명을 대체 하도록 하겠다.
아래는 NotifyFilter의 속성에 대한 설명이다.
멤버이름 | 설명 |
Attributes | 파일 또는 폴더의 특성 |
CreateTime | 파일 또는 폴더를 만든 시간 |
DirectoryName | 디렉토리 이름 |
FileName | 파일이름 |
LastAccess | 파일 또는 폴더를 마지막으로 열었던 날짜 |
LastWrite | 파일 또는 폴더에 마지막으로 기록된 날짜 |
Security | 파일 또는 폴더의 보안 설정 |
Size | 파일 또는 폴더의 크기 |
Tip!
NotifyFilter을 적절하게 세팅하고 발생하는 이벤트도 관리해서 중복되는 이벤트가 발생하지 않도록 해야 하며 중복 발생에 대한 처리도 해서 실질적으로 사용해야 하겠다.
'.Net Framework' 카테고리의 다른 글
[C# Compress] MemoryStream Compress (0) | 2013.02.15 |
---|---|
[C# Compress] GZipStream - 문자열 압축과 해제 (0) | 2013.02.15 |
[C# Delegate] 똑똑하게 써보자 델리게이트! (0) | 2013.02.12 |
What?!? C# Could Do That??? (0) | 2012.11.12 |
MVVM Applied in Windows Phone and Windows 8 (0) | 2012.11.12 |