2013-04-08 3 views

답변

2

이 코드 디렉토리를보고 :이 코드에 포함

Path testDirectory = Files.createTempDirectory(getClass().getName()); 
WatchService watcher = FileSystems.getDefault().newWatchService(); 
testDirectory.register(watcher, 
    StandardWatchEventKinds.ENTRY_CREATE, 
    StandardWatchEventKinds.ENTRY_MODIFY, 
    StandardWatchEventKinds.ENTRY_DELETE); 
for(;;) { 
    WatchKey key = watcher.take(); 
    log("key = watcher.take()"); 
    if(key.isValid()) { 
     log("key.isValid()"); 
     List< WatchEvent<?>> lst = key.pollEvents(); 
     for(WatchEvent<?> e : lst) { 
     log("WatchEvent polled: " + e.kind() + ": " + e.context()); 
     if(e.kind() == StandardWatchEventKinds.ENTRY_CREATE) { 
      Path path = (Path)e.context(); 
      File file = path.toFile(); 
      addFile(new File(testDirectory.toFile(), file.getPath())); 
     } 
     else if(e.kind() == StandardWatchEventKinds.ENTRY_DELETE) { 
      Path path = (Path)e.context(); 
      File file = path.toFile(); 
      removeFile(new File(testDirectory.toFile(), file.getPath())); 
     } 
     } 
     key.reset(); 
    } 
} 

클래스는 다음과 같습니다

This part of the io tutorial이 API의 동기를 더 많이 보여주고 설명합니다.

0

This은 원하는 자바 튜토리얼입니다. java.nio.file 패키지는 Watch Service API라고하는 파일 변경 알림 API를 제공합니다. 이 API를 사용하면 시계 서비스에 디렉토리를 등록 할 수 있습니다. 등록 할 때 관심있는 이벤트 유형 (파일 작성, 파일 삭제 또는 파일 수정)을 서비스에 알립니다.

기타 정보 here.

+0

저는 단일 디렉토리 나 일부 디렉토리 목록에 대해 감시자를 갖고 싶지 않았습니다. 나는 붙여 넣기 작업이 진행되는 곳마다 전체 시스템에 대한 청취자를 원합니다. –

관련 문제