以下方法只寫出我添加的最新項目,它不附加到以前的項目。我究竟做錯了什麼?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) –