C# Language
FileSystemWatcher
수색…
통사론
- Public FileSystemWatcher ()
- 공용 FileSystemWatcher (문자열 경로)
- 공용 FileSystemWatcher (문자열 경로, 문자열 필터)
매개 변수
통로 | 필터 |
---|---|
표준 또는 범용 명명 규칙 (UNC) 표기법으로 모니터링 할 디렉터리입니다. | 보고자하는 파일의 유형. 예를 들어 "* .txt"는 모든 텍스트 파일의 변경 사항을 감시합니다. |
기본 FileWatcher
다음 예제는 런타임에 지정된 디렉토리를보기 위해 FileSystemWatcher
를 만듭니다. 구성 요소는 LastWrite 및 LastAccess 시간의 변경, 디렉토리의 텍스트 파일 작성, 삭제 또는 이름 변경을 감시하도록 설정됩니다. 파일이 변경, 작성 또는 삭제되면 파일 경로가 콘솔에 인쇄됩니다. 파일의 이름이 바뀌면 이전 경로와 새 경로가 콘솔에 인쇄됩니다.
이 예제에서는 System.Diagnostics 및 System.IO 네임 스페이스를 사용합니다.
FileSystemWatcher watcher;
private void watch()
{
// Create a new FileSystemWatcher and set its properties.
watcher = new FileSystemWatcher();
watcher.Path = path;
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt*";
// Add event handler.
watcher.Changed += new FileSystemEventHandler(OnChanged);
// Begin watching.
watcher.EnableRaisingEvents = true;
}
// Define the event handler.
private void OnChanged(object source, FileSystemEventArgs e)
{
//Copies file to another directory or another action.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
IsFileReady
일반적인 실수 FileSystemWatcher로 시작하는 많은 사람들이 파일을 만든 즉시 FileWatcher 이벤트가 발생한다는 사실을 고려하지 않았습니다. 그러나 파일을 마치는 데 약간의 시간이 걸릴 수 있습니다.
예 :
예를 들어 1GB의 파일 크기를 사용하십시오. apr 파일은 다른 프로그램 (Explorer.exe는 어딘가에서 복사)에 의해 생성되었지만 프로세스를 완료하는 데 몇 분이 걸립니다. 이 이벤트는 생성 시간이 길어지고 파일을 복사 할 준비가 될 때까지 기다려야합니다.
파일 준비 여부를 확인하는 방법입니다.
public static bool IsFileReady(String sFilename)
{
// If the file can be opened for exclusive access it means that the file
// is no longer locked by another process.
try
{
using (FileStream inputStream = File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
{
if (inputStream.Length > 0)
{
return true;
}
else
{
return false;
}
}
}
catch (Exception)
{
return false;
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow