这不会编译,以下方法只会写出我添加的最新项目,而不会追加到以前的条目中。我究竟做错了什么?
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) {...} }
PrintWriter调用方法的事实append()并不意味着它会更改正在打开的文件的模式。
PrintWriter
append()
你还需要以附加模式打开文件:
PrintWriter pw = new PrintWriter(new FileOutputStream( new File("persons.txt"), true /* append = true */));
另请注意,文件将以系统默认编码写入。并非总是如此,它可能会导致互操作性问题,你可能需要明确指定文件编码。