C#에서 파일 시스템의 변화를 감지하기 위해 FileSystemWatcher 클래스를 사용합니다. 이를 통해 디렉터리 내 파일 생성, 수정, 삭제 이벤트를 실시간으로 처리할 수 있습니다.
1. FileSystemWatcher 기본 사용법
먼저 감시할 경로를 설정하고, 관심 있는 이벤트를 구독합니다. 다음은 간단한 예제입니다.
using System;
using System.IO;
class Program
{
static void Main()
{
var watcher = new FileSystemWatcher();
watcher.Path = @"C:\MyFolder";
watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
watcher.Created += OnCreated;
watcher.Changed += OnChanged;
watcher.Deleted += OnDeleted;
watcher.Renamed += OnRenamed;
watcher.EnableRaisingEvents = true;
Console.WriteLine("파일 시스템 감시 시작...");
Console.ReadLine();
}
private static void OnCreated(object sender, FileSystemEventArgs e)
{
Console.WriteLine($"파일 생성됨: {e.FullPath}");
}
private static void OnChanged(object sender, FileSystemEventArgs e)
{
Console.WriteLine($"파일 변경됨: {e.FullPath}");
}
private static void OnDeleted(object sender, FileSystemEventArgs e)
{
Console.WriteLine($"파일 삭제됨: {e.FullPath}");
}
private static void OnRenamed(object sender, RenamedEventArgs e)
{
Console.WriteLine($"파일 이름 변경됨: {e.OldFullPath} -> {e.FullPath}");
}
}
2. 주의할 점
파일 변경 이벤트는 여러 번 발생할 수 있어, 필요시 디바운싱 처리를 고려해야 합니다. 그리고 관리되지 않는 리소스이므로 사용 후 반드시 해제하거나 프로그램 종료 시 자동 해제되는 것을 확인하세요.
이처럼 FileSystemWatcher를 활용하면 파일 시스템의 변화를 쉽고 빠르게 감지하여 필요한 작업을 실행할 수 있습니다.
'C#' 카테고리의 다른 글
| C# 직렬화 시 참조 순환 처리 전략 (0) | 2026.07.12 |
|---|---|
| C# Span<T>와 stackalloc로 고성능 버퍼 생성 (0) | 2026.07.10 |
| C# BlockingCollection<T>로 생산자-소비자 패턴 구현 (0) | 2026.07.09 |
| C# ThreadPool Worker Thread 관리 최적화 (0) | 2026.07.09 |
| C# DateTime.ParseExact와 TryParseExact 활용 (0) | 2026.07.08 |