PrintWriter append 方法不追加

2022-08-31 16:48:11

以下方法仅写出我添加的最新项目,它不会追加到以前的条目。我做错了什么?

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) {...}
}

答案 1

调用 s 方法的事实并不意味着它更改了正在打开的文件的模式。PrintWriterappend()

您还需要在追加模式下打开文件:

PrintWriter pw = new PrintWriter(new FileOutputStream(
    new File("persons.txt"), 
    true /* append = true */)); 

另请注意,文件将以系统默认编码写入。它并不总是必需的,并且可能导致互操作性问题,您可能希望显式指定文件编码。


答案 2
PrintWriter pw = new PrintWriter(new FileOutputStream(new File("persons.txt"),true));

是追加标志。请参阅文档true


推荐