使用TimerTask每5秒用Java编写一个文件

时间:2012-09-25 13:29:59

标签: java file timertask seconds

我试图每隔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秒写一个文件?

3 个答案:

答案 0 :(得分:4)

这字面上是你的代码吗?它不会起作用,因为您在安排计时器任务后立即关闭输出流。运行任务时,输出流已经关闭,无法再写入。

确保在向其写入数据之前不要关闭输出流。

答案 1 :(得分:4)

计时器在不同的线程中运行,因此首先关闭文件编写器。

答案 2 :(得分:0)

您关闭了OutputStream。

此外,我会使用apache commons-io FileUtils,它可以更轻松地处理文件IO。

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