EOFException und andere Probleme



  • Hi.

    Also ich habe mir da ein kleines Programm geschrieben in dem ich Spaßens halber einfach mal nen bisschen
    Serialisierung verwendet habe. Also das Programm ist eine Art kleiner Terminkalender, der mich immer an
    bestimmte Sachen erinnern soll. Nun habe ich folgende Klasse gschrieben um Termine in einer Liste zu speichern
    und wenn sie dann gespeichert werden sollen, zu serialisieren:

    import java.io.*;
    import java.util.*;
    
    class AppointmentList implements Serializable {
    
        LinkedList list = new LinkedList(); // Speichert appointment-Objekte
    
        public AppointmentList() {
    
        }
    
        public final void add(Object object) {
    
            list.add(object);
        }
    
        public final Object get(int index) {
    
            return list.get(index);
        }
    
        public final void remove(int index) {
    
            list.remove(index);
        }
    
        public final int size() {
    
            return list.size();
        }
    }
    

    Nun das Speichern an sich scheint zumindest zu klappen, aber hier mal der code der Speicher-
    methode der Hauptklasse:

    public final void saveAppointments() {
    
            try {
            FileOutputStream file = new FileOutputStream("Appointments.rd");
            ObjectOutputStream os = new ObjectOutputStream(file);
            os.writeObject(appointments);
            os.close();
            } catch (IOException e) {
                System.err.println(e.toString());
            }
        }
    

    Nun, wenn ich aber mit folgender Methode das ganze wieder laden will, wird irgendeine
    EOFException geworfen und ich habe keinen Plan warum:

    public final void loadAppointments() {
    
            try {
                FileInputStream file = new FileInputStream("Appointments.rd");
                ObjectInputStream is = new ObjectInputStream(file);
                appointments = (AppointmentList) is.readObject(); // 1
                return;
            } catch (IOException e) {
                System.err.println(e.toString());
            } catch (ClassNotFoundException e2) {
                System.err.println(e2.toString());
            }
            appointments = new AppointmentList(); // 2
        }
    

    So das finde ich erstmal blöd, kann mir jemand helfen?

    So und nun noch eine Sache, obwohl diese Exception geworfen wird und in <1> kein appointment-Objekt erstellt
    wird, kann mir mein Programm dennoch mit dem in <2> erzeugten Objekt alle Termine angeben!
    Wie kann das sein..?

    Danke!



  • Schuss ins blaue:

    Schon getestet ob du nicht eventuell eine null referenz
    serilizierst?

    Das würde EOF erklären wenn du null wieder einlesen willst.

    Ich könnte wetten das ist so, hau mich aber nicht wenn ich
    falsch liege 😉


Anmelden zum Antworten