2014-09-26 4 views
-3

У меня проблема с чтением и записью arraylist в текстовый файл. В частности, с чтением. То, что я пытаюсь сделать, читается из текстового файла и переносит его в список массивов. После чего я отредактирую список и верну его обратно в текстовый файл. Я думаю, что я иду писать, но не чтение. Я пробовал читать несколько подобных вопросов, но can not, кажется, вводит это в мой код.Чтение и запись arraylist в текстовый файл

Чтение кода

public void read(List<AddressBook> addToList){ 
    BufferedReader br = null; 
    try { 
     String currentLine= ""; 
     br = new BufferedReader(new FileReader("bank_account.csv"));//file na gusto mo basahin 
     while ((currentLine = br.readLine()) != null) { 
      System.out.println(currentLine); // print per line 

       for (AddressBook read : addToList) { 
        br.read(read.getName() + read.getAddress() + read.getTelNum() + read.getEmailAdd()); 
        addToList.add(read); 
       }   } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (br != null) 
      { 
       br.close(); 
      } 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 

}

Вот что я сделал с записью

public void write(List<AddressBook> addToList) { 
     try { 
      File file = new File("bank_account.csv"); //file 
      // if file doesnt exists, then create it 
      if (!file.exists()) { 
       file.createNewFile(); 
      } 
      //FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
      FileWriter fw = new FileWriter(file.getAbsoluteFile(), true); 
      BufferedWriter bw = new BufferedWriter(fw); 
      for (AddressBook write : addToList) { 
       bw.write(write.getName() + "," + write.getAddress() + "," + write.getTelNum() + "," + write.getEmailAdd()); 
       bw.newLine(); 
      } 
      bw.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
+1

Итак, в чем ваш вопрос? Какая у вас проблема/ошибка? – forgivenson

+0

Не связано с вашей проблемой, но вы действительно должны использовать [try-with-resources] (http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html). Это очистит много вашего кода try/catch/finally. – wolfcastle

ответ

0
while ((currentLine = br.readLine()) != null) { 
     System.out.println(currentLine); // print per line 

      for (AddressBook read : addToList) { 
       br.read(read.getName() + read.getAddress() + read.getTelNum() + read.getEmailAdd()); 
       addToList.add(read); 
      } 
} 

Держу пари, там вам нужно будет сделать что-то вроде:

  1. читает каждую строку
  2. разбора его (каждая строка представляет собой CSV)
  3. создавая новый объект AddressBook со всей этой информацией
  4. добавить его в коллекцию

Код, который будет выглядеть как :

while ((currentLine = br.readLine()) != null) { 
     System.out.println(currentLine); // print per line 
     String[] splitted = currentLine.split(","); 
     AddressBook address = new AddressBook(splitted[0], splitted[1], splitted[2], splitted[3]); 

     addToList.add(address); 
} 

Конечно, есть вещи, которые вам нужно будет проверить и подтвердить, но это нехорошо.

0

Возможно, вам нужен метод чтения, подобный этому.

public void read() { 
     List<AddressBook> addToList =new ArrayList<AddressBook>(); 
     BufferedReader br = null; 
     try { 
      String currentLine= ""; 
      br = new BufferedReader(new FileReader("bank_account.csv"));//file na gusto mo basahin 
      while ((currentLine = br.readLine()) != null) { 
       System.out.println(currentLine); // print per line 

//     for (AddressBook read : addToList) { 
         String[] split =currentLine.split(","); 
         AddressBook read = new AddressBook(); 
         read.setName(split[0]); 
         read.setAddress(split[1]); 
         read.setTelNum(split[2]); 
         read.setEmailAdd(split[3]); 
//      br.read(read.getName() + read.getAddress() + read.getTelNum() + read.getEmailAdd()); 
         addToList.add(read); 
//     }   
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (br != null) 
       { 
        br.close(); 
       } 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 
Смежные вопросы