2012-05-16 104 views
0

我试图在单击JButton时将时间戳写入文件。一旦调用.close(),数据将被写入该文件,并且任何其他写入操作都会引发错误。我如何写入数据而不必创建新的FileWriter并覆盖上一行?将多行写入文件

+0

我们证明您的代码。你可能正在关闭你的文件。 – elrado

回答

3

而不是关闭,这是暗含的,你可以在FileWriter对象上调用flush()。这使它保持打开状态,但强制缓冲的数据写入文件。 当你完成写作时,请不要忘记close()

+2

或者,如果您不只想保持手柄处于打开状态,请以附加模式打开文件。 –

+0

好点。我假设WIT发生的频率很高,因此关闭并重新打开文件会产生不必要的开销。但是,如果情况并非如此,关闭和开始追加也是我的选择。 –

0

您可以让打印机在点击之间打开并在其他时间关闭它(也许在表单退出时),也可以为每次点击创建一个新的FileWriter并将其附加到文件中已有的内容。

FileWriter writer = new FileWriter("output.txt", true); //true here indicates append to file contents 

如果您选择保留作家点击之间开放,那么你可能想打电话给.flush()上的每个按钮按下以确保文件是最新的。

0

试试这个,

import java.io.BufferedWriter; 

import java.io.File; 

import java.io.FileWriter; 

import java.io.IOException; 


public class Wr { 

    public static void main(String[] args) throws IOException { 

    File f = new File("viv.txt"); 

    FileWriter fw = new FileWriter(f, true); 

    BufferedWriter bw = new BufferedWriter(fw); 

    bw.write("Helloooooooooo"); 

    bw.close(); 

    } 
}