2010-07-08 6 views
3

JDK 7의 WatchService를 사용하여 디렉토리를 모니터링하고 있습니다.JDK 7을 사용하여 디렉토리 삭제에서 파일 삭제를 알리려면 어떻게해야합니까?

ENTRY_DELETE 이벤트는 항목이 삭제되었음을 알려줍니다. 해당 항목의 이름을 다음과 비슷한 것으로 처리 할 수 ​​있습니다.

WatchEvent<Path> ev = cast(event); 
Path name = ev.context(); 
Path child = dir.resolve(name); 

삭제 된 항목이 파일인지 폴더인지 알고 싶습니다. 물론, 나는 child.isDirectory()을 시도했지만, 그 요소가 더 이상 존재하지 않기 때문에, 그것은 작동하지 않았습니다.

삭제 된 요소가 파일인지 디렉터리인지를 알 수있는 방법이 있습니까?

답변

1

불행히도 WatchService는 네이티브 OS의 파일 이벤트 서비스 위에 구축되었으므로 네이티브 서비스가 제공하는 정보에 의해 제한됩니다. 리눅스의 inotify은 삭제 된 파일 시스템 객체의 유형을 나타내지 만 Microsoft의 FileSystemWatcher은 그 이름만을 제공합니다.

+0

네, 아마도 이것이 전부라는 것을 알았지 만 시작시 디렉토리 구조 나 그와 비슷한 것을 검색하여 이벤트가 발생할 때 파일을 폴더에서 가져올 수 있다고 생각했습니다. 당신이 제공 한 참조가 .net FileSystemWatcher이지만 자바를 사용하고 있습니다. 이 .net watcher는 JDK 7의 NIO2.0 WatchService에서 지원하지 않는 "rename"이벤트를 가지고 있습니다. 귀하의 대답은 .net과 관련이 있습니까? 폴더 삭제에서 말하는 파일을 수행 할 수 없다면, 나는 둘 다 일어난 것처럼 행동해야합니다. 그리고 내 작업 중 하나가 실패하고 무시할 것입니다. – shwartz