這是我的問題,我有一個我想寫入文本文件的對象的數組列表。在大多數情況下,這種方式有效,但令人生氣的是它只寫入了數組列表的最後一個元素。我的代碼如下:Java編寫器只寫數組列表的最後一個元素
public void write() throws IOException {
try {
File file = new File("C:\\contacts.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
for(contacts contact:contactList) {
StringBuffer contactrec=new StringBuffer();
contactrec.append(contacts.getID());
contactrec.append(",");
contactrec.append(contacts.getName());
contactrec.append(",");
contactrec.append(contacts.getNotes());
bw.write(contactrec.toString());
bw.newLine();
System.out.println("Contacts have been updated");
}
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
如果該ArrayList是說的3大小筆者將3次寫ArrayList中的最後一個元素的文件。因此,如果最後一個元素是: 「12,李四,魚」的文本文件,將有:寫在上面
12,John Doe,fish
12,John Doe,fish
12,John Doe,fish
。我想知道如何解決,爲什麼會發生,提前感謝任何幫助。
我的聯繫人類是這一點,並填充了從csv文件中讀取對象:
public class contacts {
private static String ID;
private static String Name;
private static String Notes;
public contacts(String ID, String Name, String Notes){
this.ID = ID;
this.Name = Name;
this.Notes = Notes;
}
public static String getID(){
return ID;
}
public static String getName(){
return Name;
}
public static String getNotes(){
return Notes;
}
@Override
public String toString(){
return("ID = " + this.getID() + " " + "Name = " + this.getName()+ " " + "Notes = " + this.getNotes());
}
}
'contactList'如何填充?請包括該代碼和「contacts」類的代碼。 – rgettman
你可以檢查'for(contacts contacts:contactList)'這行嗎?不應該在'for'-loop的主體中使用'contact'而不是'contacts'? –
請刪除'contacts'類中的所有靜態修飾符 –