我想出了一个问题。
这是我的方法:
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次时。
任何想法如何通过多次调用相同的方法多次写同一行?
答案 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
}