파일을 디렉토리에 쓰고 삭제하는 타사 응용 프로그램이 있습니다. 파일을 삭제하기 전에 복사하려고합니다. 은 FileSystemWatcher이 작업을 수행FileSystemWatcher를 사용하여 파일 생성을 모니터링하고 삭제하기 전에 복사합니다.
FileSystemWatcher watcher;
private void WatchForFileDrop()
{
watcher = new FileSystemWatcher();
watcher.Path = "c:\\FileDrop";
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName;
watcher.Filter = "*.txt";
watcher.Created += new FileSystemEventHandler(OnCreated);
watcher.EnableRaisingEvents = true;
}
private void OnCreated(object source, FileSystemEventArgs e)
{
//Copy the file to the file drop location
System.IO.File.Copy(e.FullPath, "C:\\FileDropCopy\\" + e.Name);
}
:
우리는이 있습니다. 파일이 만들어지고 OnCreated()로 이동하는 것을 볼 수 있습니다. 파일이 디렉토리에 작성됩니다.유일한 문제는 파일이 비어 있고 파일 크기가 0kb라는 것입니다.
파일이 비어있는 이유를 다시 한 번 확인하고 싶습니다. 파일이 제 3 자 응용 프로그램에서 너무 빨리 삭제되어 적절한 복사를 수행 할 기회가 없기 때문입니까? 좀 봐 주셔서 감사합니다.
파일 생성시 알림이 표시되고 닫히지 않으면 타사 응용 프로그램에서 아직 데이터를 작성하지 않았을 수 있습니다. 'FileSystemWatcher'를 사용하여 파일을 작성하고 닫은 후, 파일을 삭제하기 전에 파일에 액세스 할 수 있습니다. – HABO
적절한 임시 파일은 공유 안 함 + 삭제할 때 열리지 않으므로 일반 액세스 검사로 일반 사용자 수준 코드가 파일에 액세스하지 못하게하므로 내용을 가로 채기 위해 더 낮은 수준의 코드가 필요할 수 있습니다. –
파일 시스템 필터 드라이버는 친구입니다. –