2013-06-20 3 views
3

로그를 파일에 기록하고 프로그램을 한 줄씩 읽고 싶습니다. 사용 가능한 방법을 사용하여 InputStream, 특히 DataInputStream을 사용해 보았습니다. 그런데 readLine 메서드가 없으므로 BufferedReader에 랩핑하여 readLine을 사용하는 것이 좋습니다. 하지만 BufferedReader을 사용하면 모든 행을 읽지 않고 어떻게 든 한 행을 읽음으로써 멈 춥니 다.현재 쓰여지고있는 java의 로그 파일 읽기.

public void read(DataInputStream ins) { 
     try { 
      while(true) { 
       if(ins.available() > 0) { 
        //BufferedReader reader = new BufferedReader(new InputStreamReader(ins)); 
        //System.out.println(reader.readLine()); 
        System.out.println(ins.readLine()); 
       } 
       else { 
        Thread.sleep(200); 
       } 
      } 
     } 
     catch(Exception e) { 
      e.printStackTrace(); 
     } 
} 

그래서 코드는 ins.readLine() 작동 있지만 사용되지 않으며 자바 설명서에 따라이 BufferedReade R을 사용하여 말한다. 하지만 reader.readLine()으로 예상대로 작동하지 않습니다.

또한이 방법을 사용하면 더 나은 Java 방식을 사용할 수 있습니다. 이것이 몇 가지 표준 문제라고 확신합니다. Trailer 클래스에 대한 어딘가를 읽었습니다. 그러나 그것을 테스트 할 수는 없습니다.

+0

예상대로 작동하지 않는 기능은 무엇입니까? – NINCOMPOOP

+0

reader.readLine()을 사용할 때 첫 번째 줄만 읽습니다. – r0b0

+0

'ävailable()'메서드를 사용하지 마십시오. 쓸모가 없습니다. InputStream는 연속적으로 갱신되는 파일을 읽지 않습니다. 스트림의 끝에 도달하면 기본 파일이 업데이트 되더라도 결과를 반환하지 않습니다. – jtahlborn

답변

0

에서 How do you continuously read a file in Java?

The trick is to use a java.io.RandomAccessFile, and periodically check if the file length is greater that your current file position. If it is, then you read the data. When you hit the length, you wait. wash, rinse, repeat.

당신이 종료되면

을 (단 한 가지 한 번 에 읽기/쓰기하거나 데이터가 손상 될 수 있습니다)하지만 당신은 상호 배제를 처리해야합니다

BufferedReader를 사용하여 한 번에 한 줄씩 읽습니다. 당신이 하나 이상에서 읽고 싶은 경우에, 당신은과 같이 루프를 사용할 수 있습니다

BufferedReader br = new BufferedReader(new FileReader("file.txt")); 
while ((sCurrentLine = br.readLine()) != null) 
{ 
    System.out.println(sCurrentLine); 
} 

이 참고하시기 바랍니다 IOException를 일으킬 수 있으므로 시도/캐치에 포장 또는 방법은 하나를 던져 그렇지 않으면 처리가 어디에.

출처 : http://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/

+0

이것은 구속력이 없습니다. OP 문제를 해결할 수 있습니다. 표준 InputStreams/Reader는 지속적으로 업데이트되는 파일을 읽는 데 사용할 수 없습니다. – jtahlborn

+0

@jtahlborn 음, 내가 더 나은 대답을 줄 수 있는지 확인하십시오. 그것은 BufferedReader를 사용하는 문서 점을 처리합니다. 그래서 떠날 것입니다. – Daniel

+0

독자가 현재 읽어야 할 줄이 없지만 파일이 닫히지 않는다면 어떻게되는지 궁금합니다. – r0b0

관련 문제