使用TimerTask每隔5秒用Java编写一个文件
我试图每5秒向一个文件追加一些字符串,但我遇到了一些问题 我的Java代码是:使用TimerTask每隔5秒用Java编写一个文件,java,file,timertask,seconds,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() {
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秒编写一个文件?这就是您的代码吗?它将不起作用,因为您在调度计时器任务后立即关闭输出流。当任务运行时,输出流已经关闭,无法再写入
在向输出流写入数据之前,请确保不要关闭输出流。这是您的代码吗?它将不起作用,因为您在调度计时器任务后立即关闭输出流。当任务运行时,输出流已经关闭,无法再写入
在向输出流写入数据之前,请确保不要关闭输出流。您关闭了输出流 我还将使用ApacheCommons io FileUtils,它使处理文件io变得更加容易
您关闭了OutputStream 我还将使用ApacheCommons io FileUtils,它使处理文件io变得更加容易
计时器在不同的线程中运行,因此首先关闭文件写入程序。计时器在不同的线程中运行,因此首先关闭文件写入程序。谢谢您的回答,现在我了解了问题所在,但我已经尝试过不关闭文件或在其他时间关闭它,而我的文件是空的…您可以在run方法中打开文件并附加到它。或者使用finalize方法但不推荐谢谢您的回答,现在我知道问题出在哪里了,但我尝试过不关闭文件或在其他时间关闭它,而我的文件是空的…您可以在run方法中打开文件并附加到它。或者使用finalize方法,但不推荐使用