[C#] FileSystemWatcher 파일 감시 모니터링

FileSystemWatcher는 특정 폴더 경로(디렉터리)의 모든 파일이 생성되거나 변경되면 함수 호출을 해줍니다.

사용 방법

사용 방법 순서입니다.

  1. FileSystemWatcher 생성자 호출
  2. 감시할 폴더 설정(디렉토리)
  3. 감시할 항목들 설정 (파일 생성, 크기, 이름, 마지막 접근 변경 등)
  4. 감시할 이벤트 설정 (생성, 변경, 삭제 등)
  5. FIleSystemWatcher 감시 모니터링 활성화
  6. 감시할 폴더 내부 변경 시 event 호출

구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.IO;

namespace Test.Utils
{
public class FileWatcher
{
public void initWatcher()
{
string filePath = $"D:\\files\\";

// 1. FileSystemWatcher 생성자 호출
FileSystemWatcher watcher = new FileSystemWatcher();

// 2. 감시할 폴더 설정(디렉토리)
watcher.Path = filePath;

// 3. 감시할 항목들 설정 (파일 생성, 크기, 이름, 마지막 접근 변경 등)
watcher.NotifyFilter = NotifyFilters.FileName |
NotifyFilters.DirectoryName |
NotifyFilters.Size |
NotifyFilters.LastAccess |
NotifyFilters.CreationTime |
NotifyFilters.LastWrite;

//감시할 파일 유형 선택 예) *.* 모든 파일
watcher.Filter = "*.*";

watcher.IncludeSubdirectories = true;

// 4. 감시할 이벤트 설정 (생성, 변경..)
watcher.Created += new FileSystemEventHandler(Changed);
watcher.Changed += new FileSystemEventHandler(Changed);
watcher.Renamed += new RenamedEventHandler(Renamed);

// 5. FIleSystemWatcher 감시 모니터링 활성화
watcher.EnableRaisingEvents = true;
}

// 6. 감시할 폴더 내부 변경 시 event 호출
private void Changed(object source, FileSystemEventArgs e)
{
Console.Write(e.FullPath);
}

// 이름 변경 시 event 호출
private void Renamed(object source, RenamedEventArgs e)
{
MessageBox.Show(e.FullPath);
}
}
}

FileSystemWatcherusing System.IO를 선언해 주어야 합니다.

initWatcher() 함수를 실행시키면 D:\files\ 해당 경로에 파일이 생기면 바로 Changed() 이벤트가 호출됩니다.

호출될 때 담기는 파라미터 FileSystemEventArgs e에서 e.Fullpath를 통해 생성된 파일의 전체 경로를 가져옵니다.

1
2
# 예)
D:\files\새 텍스트 문서.txt

이렇게 FileSystemWatcher를 사용해서 해당 폴더를 실시간으로 감지 모니터링하는 기능을 구현했습니다.

Share