1

我想出了一个问题。

这是我下面的方法:

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();
}

当我在我的主类中多次调用此方法时,此代码正在使用“我的字符串行”行创建我的 transaction.txt。但是,当我多次调用此方法以多次编写“我的字符串行”时,它只是覆盖了该行并没有给我类似的输出。

我的弦线

我的弦线

我的弦线

当我调用该方法 3 次时。

知道如何通过多次调用相同的方法多次编写同一行吗?

4

2 回答 2

10

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

参数:

file - 要写入的 File 对象

append - 如果为真,那么字节将被写入文件的末尾而不是开头

因此将代码更改为:

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

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

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

于 2013-07-18T10:01:44.663 回答
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
}
于 2013-07-18T10:23:13.583 回答