Вот моя проблема, у меня есть arraylist объектов, которые я хочу записать в текстовый файл. По большей части это работает, но довольно досадно, что он пишет только последний элемент арраиста. Мой код выглядит следующим образом:Java-писатель записывает только последний элемент arraylist
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 автор написал бы последний элемент из ArrayList 3 раза в файл. Так что, если последний элемент был: «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());
}
}
Как работает «контактList»? Пожалуйста, укажите этот код и код для класса 'contacts'. – rgettman
Вы можете проверить строку 'for (контакт контактов: contactList)'? не следует ли использовать 'контакт' вместо' контактов' в теле 'for'-loop? –
Удалите все статические модификаторы из класса 'contacts' –