使用 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