다음을 통해 공유


System.IO.FileSystemWatcher 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

지정된 디렉터리의 변경 내용을 감시하는 데 사용합니다 FileSystemWatcher . 지정된 디렉터리의 파일 및 하위 디렉터리의 변경 내용을 확인할 수 있습니다. 로컬 컴퓨터, 네트워크 드라이브 또는 원격 컴퓨터에서 파일을 감시하는 구성 요소를 만들 수 있습니다.

모든 파일의 변경 내용을 확인하려면 속성을 빈 문자열("")로 설정 Filter 하거나 wild카드s("*.*")를 사용합니다. 특정 파일을 보려면 속성을 파일 이름으로 설정합니다 Filter . 예를 들어 파일 MyDoc.txt 변경 내용을 확인하려면 속성을 "MyDoc.txt"로 설정합니다 Filter . 특정 형식의 파일에서 변경 내용을 확인할 수도 있습니다. 예를 들어 텍스트 파일의 변경 내용을 확인하려면 속성을 "*.txt"로 설정합니다 Filter .

디렉터리 또는 파일에서 확인할 수 있는 몇 가지 유형의 변경 내용이 있습니다. 예를 들어 파일 또는 디렉터리, 날짜 및 시간 또는 Size 변경 내용을 AttributesLastWrite 확인할 수 있습니다. 이 작업은 속성을 값 중 하나로 설정 NotifyFilter 하여 수행됩니다 NotifyFilters . 볼 수 있는 변경 내용 유형에 대한 자세한 내용은 다음을 참조하세요 NotifyFilters.

파일 또는 디렉터리 이름 바꾸기, 삭제 또는 생성을 감시할 수 있습니다. 예를 들어 텍스트 파일의 이름 바꾸기를 감시하려면 속성을 "*.txt"로 설정하고 Filter 해당 매개 변수에 지정된 메서드를 Renamed 호출 WaitForChanged 합니다.

Windows 운영 체제는 구성 요소에 의해 생성된 FileSystemWatcher버퍼의 파일 변경 내용을 알 수 있습니다. 짧은 시간에 많은 변경 내용이 있는 경우 버퍼가 오버플로할 수 있습니다. 이렇게 하면 구성 요소가 디렉터리의 변경 내용을 추적하지 않으며 일괄 알림만 제공합니다. 디스크로 교환할 수 없는 페이징되지 않은 메모리에서 제공되므로 속성을 사용하여 InternalBufferSize 버퍼의 크기를 늘리는 것은 비용이 많이 들기 때문에 버퍼를 파일 변경 이벤트를 놓치지 않을 만큼 작게 유지합니다. 버퍼 오버플로를 방지하려면 원치 않는 변경 알림을 필터링할 수 있도록 해당 및 IncludeSubdirectories 속성을 사용합니다NotifyFilter.

인스턴스의 초기 속성 값의 목록을 FileSystemWatcher, 참조는 FileSystemWatcher 생성자입니다.

클래스 사용 시 고려 사항 FileSystemWatcher :

  • 숨겨진 파일은 무시되지 않습니다.
  • 일부 시스템에서는 FileSystemWatcher 짧은 8.3 파일 이름 형식을 사용하여 파일 변경 내용을 보고합니다. 예를 들어 "LongFileName.LongExtension"의 변경 내용은 "LongFil~"로 보고될 수 있습니다. Lon".
  • 이 클래스에는 모든 멤버에 적용되는 클래스 수준의 링크 요청 및 상속 요청이 포함됩니다. 직접 호출자 또는 파생 클래스에 완전 신뢰 권한이 없는 경우 A SecurityException 가 throw됩니다. 보안 요구 사항에 대한 자세한 내용은 링크 요구를 참조 하세요.
  • 네트워크를 통해 디렉터리를 모니터링하기 위해 InternalBufferSize 속성에 설정할 수 있는 최대 크기는 64KB입니다.

폴더 복사 및 이동

운영 체제 및 FileSystemWatcher 개체는 잘라내기 및 붙여넣기 작업 또는 이동 동작을 폴더 및 해당 내용에 대한 이름 바꾸기 동작으로 해석합니다. 파일이 있는 폴더를 잘라내어 감시 FileSystemWatcher 중인 폴더에 붙여넣으면 개체는 폴더만 새 폴더로 보고하지만 기본적으로 이름이 바뀌기 때문에 해당 내용이 보고되지 않습니다.

폴더의 내용이 감시된 폴더로 이동되거나 복사되었음을 알리려면 다음 표에 설명된 대로 이벤트 처리기 메서드를 제공합니다 OnChangedOnRenamed .

이벤트 처리기 처리된 이벤트 성능
OnChanged Changed, , CreatedDeleted 파일 특성, 만든 파일 및 삭제된 파일의 변경 내용을 보고합니다.
OnRenamed Renamed 이름이 바뀐 파일 및 폴더의 이전 경로와 새 경로를 나열하고 필요한 경우 재귀적으로 확장합니다.

이벤트 및 버퍼 크기

다음과 같이 발생하는 파일 시스템 변경 이벤트에는 몇 가지 요인이 영향을 줄 수 있습니다.

  • 일반적인 파일 시스템 작업으로 두 개 이상의 이벤트가 발생할 수 있습니다. 예를 들어 파일이 한 디렉터리에서 다른 디렉터리로 이동되면 여러 OnChanged 디렉터리와 일부 OnCreated 이벤트가 OnDeleted 발생할 수 있습니다. 파일 이동은 여러 개의 간단한 작업으로 구성된 복잡한 작업이므로 여러 이벤트가 발생합니다. 마찬가지로, 일부 애플리케이션 (예: 바이러스 백신 소프트웨어)에서 검색 되는 추가 파일 시스템 이벤트 않을 FileSystemWatcher합니다.
  • 디스크가 FileSystemWatcher 전환되거나 제거되지 않는 한 디스크를 볼 수 있습니다. FileSystemWatcher 타임스탬프를 변경하고 속성을 변경할 수 없으므로 CD 및 DVD에 대한 이벤트를 발생시키지 않습니다. 구성 요소가 제대로 작동하려면 원격 컴퓨터에 필요한 플랫폼 중 하나가 설치되어 있어야 합니다.

FileSystemWatcher 버퍼 크기를 초과하면 이벤트가 누락될 수 있습니다. 이벤트 누락을 방지하려면 다음 지침을 따르세요.

  • 속성을 설정하여 버퍼 크기를 늘입니다 InternalBufferSize .
  • 긴 파일 이름이 버퍼를 채우는 데 기여하므로 파일 이름이 긴 파일을 보지 마세요. 더 짧은 이름을 사용하여 이러한 파일의 이름을 바꾸는 것이 좋습니다.
  • 이벤트 처리 코드를 최대한 짧게 유지합니다.