c# FileSystemWatcher Class
파일의 변경 및 생성, 삭제를 했을 때 이벤트를 확인하기 위한 일이 생겨서
이것저것 알아봤다..
사실 c#은 일적으로 필요해서 구글을 통해서 야매로 만들다보니 정식적으로 제대로 배워보지 못했다.
MSDN 링크 : https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx
System.IO.FileSystemWatcher 속함
Changed,Created,Deleted,Disposed,Renamed 등 파일이나 폴더의 변경 이벤트가 발생했을 때 사용할 수 있다.
단순하게 로그 파일을 쌓아도 파일이 변경되어서 이벤트가 발생한다.
다만 파일을 열었을 때의 이벤트가 없어서 아쉽다...이 부분이 정말 필요한데 말이다. 열고 닫고 했을 때의 이벤트...
이러면 리얼타임으로 뭔가 체크를 해야하는 로직이 필요한것 같은데 관련 자료를 더 찾아봐야겠다.
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
이런식으로 필터를 걸 수 있다.
FileSystemEventArgs 를 통하여 속성별 값을 확인할 수 있는데
ChangType에서는 Changed,Created,Deleted,Disposed,Renamed 등 대한 이벤트 여부를 확인할 수 있고
FullPath에서는 파일 및 폴더의 전체 경로를 확인할 수 있다.
Name은 파일 및 폴더의 붙여진 이름을 볼 수 있다.
IncludeSubdirectories = true or false를 통하여 하위 디렉토리를 포함하여 변경 이벤트를 받을 것인지 설정할 수 있다.
FileSystemWatcher.Filter를 통하여 전체 파일 및 폴더를 검색할지 또는 특정 문서 파일을 검색할 것인지 필터를 설정할 수 있다.
다만 여러개의 필터의 조건을 넣으려면 설정이 필요하다.
MSDN 문서상으로는 .." Use of multiple filters such as "*.txt|*.doc" is not supported. 이렇게는 지원 못한다고 한다.
방법으로는 이벤트를 받고나서 화면에 보여줄때 특정 조건을 걸어서 그 조건만 보여주게끔 하는 방법이 있는 듯하다.
역시나 구글링을 통해서 확인했지만 테스트를 해봐야겠다...
관련 자료 : https://stackoverflow.com/questions/6965184/how-to-set-filter-for-filesystemwatcher-for-multiple-file-types