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 回答