如何通过在不同的时间调用相同的方法在文本文件中写多行?

时间:2013-07-18 09:59:23

标签: java

我想出了一个问题。

这是我的方法:

public void someMethod()
{
    StringBuilder newFile = new StringBuilder();
    String edited = "My String Line";
    newFile.append(edited);
    newFile.append("\n");
    FileWriter fstreamWrite = new FileWriter("transaction.txt");
    BufferedWriter out = new BufferedWriter(fstreamWrite);
    out.write(newFile.toString());
    out.close();
}

当我在主类中多次调用此方法时,这段代码创建了一个带有“My String Line”行的transaction.txt。但是当我多次调用这个方法来编写“我的字符串行”时,它只是覆盖了行而没有给我输出像。

My String Line

My String Line

My String Line

当我调用该方法3次时。

任何想法如何通过多次调用相同的方法多次写同一行?

2 个答案:

答案 0 :(得分:10)

我认为你想要附加到一个文件。然后,您可以使用构造函数FileWriter(java.io.File,boolean)

  

<强>参数:

     

file - 要写入

的File对象      

append - 如果为true,则将字节写入文件末尾而不是开头

因此将代码更改为:

new FileWriter("transaction.txt",true);

要在文件中写入新行,请使用BufferedWriter#newLine()

  

写一个行分隔符。行分隔符字符串由系统属性line.separator定义,不一定是单个换行符('\ n')。

答案 1 :(得分:1)

打开一个文件只是为了在那里写几行是个坏主意。更好的方法是将Writer作为参数传递给您的方法:

public void someMethod(BufferedWriter writer) throws IOExcpetion {
    // setup your data to write
    StringBuilder sb = .....
    // actually write it
    writer.write(sb.toString());
    writer.newLine()
}

完成后,您可以在以下设置中使用它:

BufferedWriter bw = null;
try {
    bw = .... // open the writer
    while (...) {
       someMethod(bw);
    }
    bw.close();
} catch (IOException io) {
    // handle IOException here
} 
...
finally {
    // make sure bw is closed
}