본문 바로가기

C#

C# 파일 시스템 감시(FileSystemWatcher)로 이벤트 처리

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를 활용하면 파일 시스템의 변화를 쉽고 빠르게 감지하여 필요한 작업을 실행할 수 있습니다.