以下方法只写出我添加的最新项目,它不附加到以前的项目。我究竟做错了什么?PrintWriter append方法不追加
public void addNew() {
try {
PrintWriter pw = new PrintWriter(new File("persons.txt"));
int id = Integer.parseInt(jTextField.getText());
String name = jTextField1.getText();
String surname = jTextField2.getText();
Person p = new Person(id,name,surname);
pw.append(p.toString());
pw.append("sdf");
pw.close();
} catch (FileNotFoundException e) {...}
}
这就像唤醒沉睡的线程,对于很抱歉。但我有疑问。我如何做文件追加操作,如果我只给予文件对象,我不允许使用流类(例如FileOutputStream等)。我允许的是:Printwriter pw = new PrintWriter(file); :我试着append(),write(),print()。有没有现成的方法来追加这种情况。 – 2013-04-11 16:43:10
作为澄清,PrintWriter的'append()'方法指的是它附加到Writer,即它本身i的事实。e它是自己的输出流,而不是文件。 –
并且参考@ user1707035的问题,不,看起来您不能使用PrintWriter追加而不用OutputStream对象构造它。这是因为PrintWriter在实例化时打开了流,并且只有支持File或filename作为参数的构造函数通过在内部构造OutputStream对象而不使用“append”参数来打开文件。参考(文档):https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#PrintWriter(java.io.File) –