2012-06-25 3 views
3

System.out.println 대신 파일에 쓰고 동시에 저장하여 사용자가 파일을 열어서 언제든지 진행률을 볼 수 있도록해야합니다. . 지금은 내가 Out.close()를 말할 않는 한이 파일에 내용을 저장하지 않는 코드를파일에 쓰고 동적으로 Java에 저장하는 방법

 FileWriter fstream = null; 
     File file1 = new File(logFile); 
     fstream = new FileWriter(file1); 
     out = new BufferedWriter(fstream); 
       out.write(msg); 
    out.write("\n"); 

을 다음 사용하고 마우스 오른쪽

;

FYI - 1. 이것은 Java EE 응용 프로그램 코드입니다. 2. 사용자에게 Log4jLogger를 보내지 않겠습니다.

더 간단한 방법이 있습니까? 어떤 포인터?

답변

7

close() 번으로 전화 할 필요가 없습니다. 으로 전화하십시오.

출력 스트림을 플러시하고 버퍼링 된 출력 바이트를 모두 강제로 으로 기록합니다.

+0

나는 close()를 건너 뛰는 것에 동의하지 않습니다. 'finally'코드 블록에서 close()를 호출하는 것이 좋습니다. –

+0

나는 결코 가까이에 전화해서는 안된다는 의미는 아니었다. –

+0

친구 감사합니다! – user837593

0

짧은 대답은 OutputStream#flush()입니다. 슬픈 대답은 사실 많은 Java EE 배포에서, f_sync()가 한 번 약속했던 정보를 잃어버린 JVM과 가상화 된 클라우드를 통해 보장하기가 어렵다는 것입니다.

0

이렇게 할 수도 있습니다.

PrintWriter out = new PrintWriter(logFile, "UTF-8"); 
out.println(msg); 
out.flush(); 

출력이 특정 시간에 이루어 지도록하려면 flush() 메서드를 사용하십시오. 또한이 방법으로 출력 파일의 인코딩을 지정할 수 있습니다.

관련 문제