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