2012-09-25 4 views
1

5 초마다 파일에 문자열을 추가하려고하는데 몇 가지 문제가 있습니다.TimerTask를 사용하여 매 5 초마다 Java로 파일 작성하기

File file = new File("MyFile.txt"); 

FileWriter outFile = new FileWriter(file); 

final PrintWriter out = new PrintWriter(outFile); 

new Timer().scheduleAtFixedRate(new TimerTask() 
{ 
    public void run() 
    { 
     out.println("Test string..."); 
    }, 0, 5 * 1000); 
} 

out.close(); 

하지만 내 파일이 항상 비어있는 것으로 나타났습니다 :

내 자바 코드는 그것은 아무것도 기록하지 않습니다!

내 문제는 TimerTask 클래스에 있다고 생각하지만 해결할 수는 없습니다.

N 초마다 파일을 쓰는 더 좋은 방법이 있습니까?

답변

4

타이머는 다른 스레드에서 실행됩니다.

+0

답장을 보내 주셔서 감사합니다. 문제가 무엇인지 이해했지만 지금은 파일을 닫지 않거나 다른 순간에 파일을 닫지 않으려 고했습니다. 파일이 비어 있습니다. – JohnQ

+0

실행 방법 내에서 파일을 열고 추가 할 수 있습니다 그것에. 대안으로 finalize 메소드를 사용하지만 권장하지는 않음 http://www.java-samples.com/showtutorial.php?tutorialid=145 – gigadot

4

문자 그대로 귀하의 코드입니까? 타이머 작업을 예약 한 직후 출력 스트림을 닫으므로 작동하지 않습니다. 작업이 실행되면 출력 스트림이 이미 닫혀 있으므로 더 이상 쓸 수 없습니다.

출력 스트림을 데이터에 쓰기 전에 닫지 않도록하십시오.