2016-01-13 3 views
0

Мне нужно написать способ чтения и записи файла ArrayList в файл. У меня уже есть метод записи:[Java] read & process file

public void saveToFile(String file, ArrayList<Student> arrayList) throws IOException { 
     int length = arrayList.size(); 

     FileWriter fileWriter = new FileWriter(file); 

     for (Student student : arrayList){ 
      int id = student.getId(); 
      String name = student.getName(); 
      int rep = student.getAnzahlRepetitonen(); 
      double wahrscheinlichkeit = student.getWahrscheinlichkeit(); 
      boolean inPot = student.isInPot(); 

      fileWriter.write(Integer.toString(id) + "; " + name + "; " + Integer.toString(rep) + "; " + Double.toString(wahrscheinlichkeit) + "; " + Boolean.toString(inPot) + "\n"); 
     } 

     fileWriter.close(); 
    } 

Я знаю, что читатель обрабатывается строчно. Как мне закодировать моего читателя, чтобы разделить каждую строку в точках с запятой, чтобы я получил 5 объектов, необходимых для «Студента»?

+1

Я думаю, что новый объект-ученик создается на основе новой строки ('\ n'), поскольку каждый объект-ученик печатается по новой строке. Поэтому ** Reader ** должен обрабатывать новую строку, не так ли? – Razib

+0

читатель должен прочитать строку и разбить ее, используя «;» ? – gonephishing

+0

просто проверяю - «Я знаю, что читатель обрабатывает строки за строкой. Как мне закодировать мой читатель, чтобы разделить каждую строку в точках с запятой» означает «Я знаю, что сценарист обрабатывает строки за строкой. Мне нужно закодировать моего читателя, чтобы разделить каждую строку в точках с запятой «правильно? – Leo

ответ

1

Вы можете создать BufferedReader и при чтении строки за строкой разделить строку, используя «;» и постройте объект Student на основе этих значений. Конечно, когда вы делаете, что вы должны знать, что индекс в полученном массиве содержит, в которой информация, как:

BufferedReader br = new BufferedReader(new FileReader(filename)); 
String line = null; 
while ((line = br.readline()) != null) { 
     Student st = new Student(); 
     String[] cols = line.split(";"); 
     int id = Integer.parseInt(cols[0]); 
     st.setId(id); 
     // .. so on for other indices like cols[1] etc.. 
} 
br.close(); 
2

Если вы используете более свежую версию Java, вы также можете сделать это

for (String line : Files.realAllLines(Paths.get(filename)) { 
    Student st = new Student(); 
    String[] data= line.split(";"); 
    int id = Integer.parseInt(data[0]); 
    st.setId(id); 
}