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

Posted

技术标签:

【中文标题】使用 TimerTask 每 5 秒用 Java 编写一个文件【英文标题】:Writing a file in Java every 5 seconds with TimerTask 【发布时间】:2012-09-25 13:29:58 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

谢谢你的回答,现在我明白是什么问题了,但我试过不关闭文件或稍后关闭它,我的文件是空的...... 您可以在 run 方法中打开文件并附加到它。或者使用 finalize 方法,但不推荐 java-samples.com/showtutorial.php?tutorialid=145【参考方案2】:

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

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

【讨论】:

【参考方案3】:

您关闭了 OutputStream。

我还会使用 apache commons-io FileUtils,它让处理文件 IO 的工作变得更加轻松。

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

【讨论】:

以上是关于使用 TimerTask 每 5 秒用 Java 编写一个文件的主要内容,如果未能解决你的问题,请参考以下文章

每 X 秒用 mysql 数据更新 google java map

使用 jQuery 每 10 秒用 php 数据刷新一个 div

63使用Timer类来实现定时任务

调用每 5 秒返回一个值的方法

java定时器的使用(Timer)

java.util.Timer简介