2010-04-27 4 views
3

나는 실행 중에 동적으로 생성 될 수있는 파일을 확인해야하는 응용 프로그램을 가지고 있는데, 파일이 아직 나타나지 않은 최대 시간 이후에 포기할 것입니다. Java에서 파일을 폴링하는 것 외에 다른 파일을 검사하는 것보다 효율적인 방법이 있는지 알고 싶었고 매 X 초마다 자고 있었습니까? 그렇다면 가장 효율적인 방법은 무엇일까요?Java로 동적으로 생성 된 파일을 확인하는 방법은 무엇입니까?

답변

3

언급 한대로 파일 시스템을 폴링해야합니다. Java 7은 file system notifications으로되어 있기 때문에 어느 시점에서는 쉽게 이해할 수 있습니다.

+0

멋지다. 기다릴 수 없어. –

1

동일한 프로그램에서 폴링으로 파일을 만드는 경우 Object.notify()를 사용하여 프로그램 부분에 파일을 알리는 논리를 추가 할 수 있습니다. wait() 및 notify/notifyAll() 메커니즘에 대한 일반적인 설명은 여기에서 찾을 수 있습니다. http://java.sun.com/docs/books/tutorial/essential/concurrency/guardmeth.html

+0

이것은 좋은 생각처럼 보이지만 파일이 외부에서 생성되기 때문에 필자의 경우에는 적용 할 수 없습니다. – Traker

0

JPoller을 시도해 파일 변경 사항을 조사 할 수 있습니다.

Windows에서 실행중인 경우 디렉터리 변경 알림을받을 수 있습니다 (Obtaining Directory Change Notifications 참조). 물론 이것은 크로스 플랫폼이 아니며 JNA 또는 이와 유사한 기본 브리지를 사용해야합니다. 사실, 클래스와 같은 JNA 오프사이드, 기본 플랫폼의 파일 변경 알림을 사용하는 FileMonitor 클래스 (다운로드시).

손쉬운 파일 수를 보아도 폴링은 성능상의 문제가 아닐 수도 있지만 "기분 좋은"해결책은 아닙니다. 순수 자바 솔루션. 다른 한편으로는 수천 개의 파일을 포함하는 디렉토리를 모니터링하면 OS에서 직접 noficiation의 혜택을 볼 수 있습니다.

관련 문제