这是我写入文件的方法,这个方法属于一个类
public void write(FileOutputStream fo) throws IOException
{
PrintWriter out=new PrintWriter(fo);
for (int i = 0; i < size; i++) {
String formatted="%3d";
for (int j=0;j<size;j++)
{
out.append(String.format(formatted,arr[i][j]));
}
out.append(System.getProperty("line.separator"));
}
out.append(System.getProperty("line.separator"));
out.close();
}
我想将结果写入许多不同的文件,对应于由适当创建的对象读取的输入文件,因此我将待写文件作为参数传递给此方法
它根本不附加
花了几个小时寻找这个问题的解决方案后,我只得到了使用PrintWriter附加指定文件路径的结果,例如:
PrintWriter out=new PrintWriter(new FileWriter("output1.txt",true));
如果我使用
PrintWriter out=new PrintWriter(new FileWriter(fo,true));
我遇到错误
当调用该对象的2个实例的write方法时,它不会追加
public void writeSolution() throws IOException
{
fo=new FileOutputStream("output\\output1.txt",true);
start.write(fo);
goal.write(fo);
fo.close();
}
请帮我解决这个问题
答案 0 :(得分:0)
当您关闭PrintWriter
时,close()
方法也会关闭基础流/作家。
每次拨打write
方法时,都会打开PrintWriter
,然后在结束时关闭它。这意味着流已关闭。下次打开PrintWriter
时,它是一个已关闭的文件。您无法写入已关闭的文件。
当您执行此类操作时,PrintWriter
不会抛出异常,因此它会默默地执行任何操作。并且您没有使用checkError()
方法,因此您不知道那里有错误。
您应该做的是将PrintWriter
声明为字段(以便在调用write()
之间保持其状态,在开始调用write()
方法之前将其打开,然后关闭在你最后一次调用write()
方法之后它。记得检查错误。