1

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

3 に答える 3

4

それは文字通りあなたのコードですか?タイマータスクをスケジュールした直後に出力ストリームを閉じるため、機能しません。タスクが実行されると、出力ストリームはすでに閉じられており、書き込むことができなくなります。

データを書き込む前に、出力ストリームを閉じないようにしてください。

于 2012-09-25T13:32:27.560 に答える
4

タイマーは別のスレッドで実行されるため、ファイルライターが最初に閉じられます。

于 2012-09-25T13:32:40.757 に答える
0

OutputStreamを閉じました。

また、apache commons-io FileUtilsを使用すると、ファイルIOの処理がはるかに簡単になります。

http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html

于 2012-09-25T13:32:31.677 に答える