[C#] FileSystemWatcher 파일 감시 모니터링Language/C#2023. 8. 27. 22:02
Table of Contents
반응형
FileSystemWatcher는 특정 폴더 경로(디렉터리)의 모든 파일이 생성되거나 변경되면 함수 호출을 해줍니다.
사용 방법
사용 방법 순서입니다.
FileSystemWatcher
생성자 호출- 감시할 폴더 설정(디렉토리)
- 감시할 항목들 설정 (파일 생성, 크기, 이름, 마지막 접근 변경 등)
- 감시할 이벤트 설정 (생성, 변경, 삭제 등)
- FIleSystemWatcher 감시 모니터링 활성화
- 감시할 폴더 내부 변경 시 event 호출
구현
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);
}
}
}
FileSystemWatcher
은 using System.IO
를 선언해 주어야 합니다.
initWatcher()
함수를 실행시키면 D:\files\ 해당 경로에 파일이 생기면 바로 Changed()
이벤트가 호출됩니다.
호출될 때 담기는 파라미터 FileSystemEventArgs e
에서 e.Fullpath를 통해 생성된 파일의 전체 경로를 가져옵니다.
# 예)
D:\files\새 텍스트 문서.txt
이렇게 FileSystemWatcher를 사용해서 해당 폴더를 실시간으로 감지 모니터링하는 기능을 구현했습니다.
반응형
'Language > C#' 카테고리의 다른 글
[.NET Core] 코드 예제를 통해 멀티스레딩 마스터하기 (0) | 2023.12.01 |
---|---|
[.NET Core] RabbitMQ 사용 가이드 (0) | 2023.11.17 |
.NET Core에서 Swagger를 사용하는 방법 (0) | 2023.10.31 |
C# and .NET Core 멀티스레딩(multithreading) (0) | 2023.09.05 |
[C#] 콘솔 프로그램 백그라운드(창 없이) 실행 방법 (0) | 2023.08.31 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!