2008-09-26 2 views
3

특정 Java 응용 프로그램 (Java 1.6, Solaris)에서 여러 백그라운드 스레드를 사용하여 특정 정규 표현식 패턴과 일치하는 출력 행에 대한 일련의 텍스트 파일을 모니터 한 다음 사용합니다 그 라인의. 파일 당 하나의 스레드가 있습니다. 그들은 관심있는 행을 대기열에 기록하고 다른 배경 스레드는 대기열을 모니터링하여 모니터링되는 모든 파일 모음에 걸쳐 관심있는 모든 행을 수집합니다.Java에서 파일을 다시 열어보고 있습니다.

내가 가진 한 가지 문제는 내가 모니터링하는 파일 중 하나가 다시 열릴 때입니다. 모니터링하는 파일을 만드는 많은 응용 프로그램은 다시 시작할 때 로그 파일을 다시 시작합니다. 그들은 이미있는 것에 추가하지 않습니다.

파일을 다시 열고 파일을 다시 시작했는지 감지하려면 Java 응용 프로그램이 필요합니다.

어떻게하면됩니까?

답변

-1

파일 시스템에서 특정 파일을 읽는 중임을 나타낼 수 있습니다. 읽을 파일 (a.txt) 옆에 a.txt를 읽음을 나타내는 파일 (a.txt.lock)을 만듭니다. 프로세스가 끝나면 a.txt.lock이 삭제됩니다. 프로세스가 읽을 파일을 열 때마다 미리 잠금 파일을 검사합니다. 잠금 파일이 없으면 사용되지 않습니다. 나는 그것이 의미가 있고 당신의 질문에 대답하기를 바랍니다. 건배!

+0

ps 일반적으로 프로그램에서 다른 인스턴스가 실행 중인지 확인하기 위해 사용됩니다. –

1

각 파일의 길이를 기록해 둘 수 있습니까? 현재 길이가 0으로 돌아가거나 마지막으로 길이를 기록한 시간보다 작 으면 파일이 응용 프로그램에 의해 다시 시작된 것입니다.

1

잠금 파일을 사용하는 것은 쥬라기가 언급 한 해결책입니다.

또 다른 방법은 패턴을 읽는 동안 파일을 열어보고 파일의 크기가 새인지 시간을 확인하는 것입니다. 작성 시간이 발견 된 시간과 같지 않으면 작성 시간이 다시 작성되었음을 확신 할 수 있습니다.

관련 문제