2016-01-29 6 views
0

Вот моя проблема, у меня есть 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()); 
    } 
} 
+1

Как работает «контактList»? Пожалуйста, укажите этот код и код для класса 'contacts'. – rgettman

+0

Вы можете проверить строку 'for (контакт контактов: contactList)'? не следует ли использовать 'контакт' вместо' контактов' в теле 'for'-loop? –

+0

Удалите все статические модификаторы из класса 'contacts' –

ответ

2

Вы используете статические методы, так что все связано с contacts класса, а не объект contact.

Поэтому измените методы доступа к данным на нестатические. Заполните объекты правильно, а затем в цикле for вместо использования contacts используйте contact.

+1

OP необходимо также изменить все переменные-члены и нестатические. –

+0

Я сейчас получаю индекс за пределами ошибки: 1 – PythoniusNoobus

+0

Поместите обновленный код. –