Java - Wie zu Lesen-Datei in ArrayList von Objekten?

Ich will eine ArrayList Student und speichern in eine Datei zur späteren Verwendung. Ich erfolgreich, schrieb es aber, wenn ich es lese zurück zu ArrayList habe ich nur ein Objekt.

public class Student implements Serializable{
public String fname, lname, course;
int section;
private static final long serialVersionUID = 1L;

public static ArrayList<Student> students = getStudent();

public Student() {
}

public Student(String fname, String lname, String course, int section){
    this.fname = fname;
    this.lname = lname;
    this.course = course;
    this.section = section;
}
public static void addStudent(){
    String fname = GetInput.getInput("Enter the First Name: ");
    String lname = GetInput.getInput("Enter the Last Name: ");
    String course = GetInput.getInput("Enter the Course: ");
    String S_section = GetInput.getInput("Enter the section: ");
    int section = Integer.parseInt(S_section);
    Student student = new Student(fname, lname, course, section);  
    students.add(student); 
    System.out.println("Writing to file...");
    try {
        writeToFile(student);
    } catch (FileNotFoundException ex) {
        System.out.println(ex.getMessage());
    } catch (IOException ex) {
        System.out.println(ex.getMessage());
    }
}

public static ArrayList<Student> getStudent(){
    try{
        FileInputStream fis = new FileInputStream("C:\\students.ser");
        ObjectInputStream ois = new ObjectInputStream(fis);
        ArrayList<Student> students1 = (ArrayList<Student>) ois.readObject();

        ois.close();

        return students1;
    } catch( ClassNotFoundException | IOException ex){
        System.out.println(ex.getMessage());
        return null;
    }
}
public static void listStudent(ArrayList<Student> students){
    System.out.println("View the Records in the Database:");
    for(Student student: students){
        System.out.println("Name: " + student.fname + " " + student.lname);
        System.out.println("Course: " + student.course);
        System.out.println("Section: " + student.section);
        System.out.println();
    }
}

static void writeToFile(Student student) throws FileNotFoundException, IOException{
    String path = "C:\\students.ser";
    FileOutputStream fos = new FileOutputStream(path, true);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(student);
    oos.close();
    System.out.println("New Record has been written!");
}

Wenn ich Lesen der Datei durch den Aufruf getStudent() und drucken Sie es aus, indem listStudent() ich habe nur einen Datensatz der Datei.

Bitte helfen Sie mir!
Viel zu schätzen.

BEARBEITEN

Hatte ich versucht, das schreiben einer arraylist an-Datei und Lesen Sie es in arraylist. Ich werde Ihnen zeigen, wie ich das geschafft habe.
Erstens, ich Schreibe arraylist Datei:

public static ArrayList<Student> students = new ArrayList<>();

public static void addStudent(){
    Student student = new Student(fname, lname, course, section);  
    students.add(student); 
    System.out.println("Writing to file...");
    try {
        writeToFile(students);
    }catch...
}

static void writeToFile(ArrayList<Student> students) throws FileNotFoundException, IOException{
    String path = "C:\\students.ser";
    FileOutputStream fos = new FileOutputStream(path, true);
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(students);
    oos.close();
    System.out.println("New Record has been written!");

Und dann lese ich student Datei:

public static ArrayList<Student> getStudent(){
    try{
        FileInputStream fis = new FileInputStream("C:\\students.ser");
        ObjectInputStream ois = new ObjectInputStream(fis);
        ArrayList<Student> students1 = (ArrayList<Student>) ois.readObject();
        ois.close();
        return students1;
    } catch( ClassNotFoundException | IOException ex){
        System.out.println(ex.getMessage());
        return null;
    }
}

Kann ich sehen, dass in der Datei habe ich viele Objekte, wie die Dateigröße weiter zu wachsen. Aber ich nur ein Objekt, nachdem es gelesen, das ist mein erstes Objekt, schrieb ich an die Datei.

Sie scheinen nur zu schreiben, eine Schüler-Datei. Es macht also Sinn, dass Sie nur Lesen.
Vielen Dank für Ihren Kommentar. Ich bemerkte, dass, aber ich angehängt, das neue Objekt der alten Datei, also technisch habe ich paar Objekte meiner Datei. FileOutputStream fos = new FileOutputStream(path, true);

InformationsquelleAutor TomNg | 2013-11-20

Schreibe einen Kommentar