Fehler beim Lesen von Objekten aus Datei (die zweite)

Status
Nicht offen für weitere Antworten.

Anselmus

Bekanntes Mitglied
Hi Folks,

hab ein kleines Problem, hatte zwar hier schon mal eine Lösung zu einem ähnlichen Problem, aber die Lösung funktioniert leider nicht...

hier das Problem

ich habe Objekte vom Typ "raum", die. solange das program läuft, in einer Linked List untergebracht sind:

Code:
static List raum_liste = Collections.synchronizedList(new LinkedList());

während des programs werden die räume folgendermaßen in die liste eingetragen:

Code:
    static void neuerRaum()
    {
        try
        {
        raum der_neue_raum = new raum();
        der_neue_raum.neuRaum();
        raum_liste.add(der_neue_raum);
        }
        catch(Exception e)
        {
            System.out.println("Fehler bei neuerRaum");
        }
    }
das geht prima, ich kann mir die liste der räume ansehen und ich kann sie speichern, so:

Code:
    static void speichereRaeume()
    {
        raum schreib_raum = new raum();
        try
        {
            System.out.print("...speichere Räume...");
            ObjectOutputStream raum_out = new ObjectOutputStream(new FileOutputStream("e:\\java\\oop\\freaks\\stundenplaneditor\\raeume.dat", true));
            for(int i=0; i<raum_liste.size(); i++)
            {
                schreib_raum = (raum) raum_liste.get(i);
                raum_out.writeObject(schreib_raum);
            }
            raum_out.close();
            System.out.print("gespeichert");
        }
        catch(Exception e)
        {
            System.out.print("Fehler bei raumspeichern");
        }
    }

das geht auch prima...
leider kann ich nur noch das erste objekt von raeume.dat laden
ich würde sie aber gerne alle laden um sie wieder in eine Linked List zu schreiben
hier ist mein (nicht funktionierender) Vorschlag:

Code:
    static void ladeRaeume()
    {
        raum ein_raum = new raum();
        try
        {
            System.out.print("\n...lade Räume...");
            ObjectInputStream raum_in = new ObjectInputStream(new FileInputStream   ("e:\\java\\oop\\freaks\\stundenplaneditor\\raeume.dat"));
            FileInputStream fis = new FileInputStream("e:\\java\\oop\\freaks\\stundenplaneditor\\raeume.dat");
            ein_raum = (raum) new ObjectInputStream(fis).readObject();
            while(ein_raum != null)
            {
                raum_liste.add(ein_raum);
                ein_raum = (raum) new ObjectInputStream(fis).readObject();
            }
            System.out.print("geladen1");
        }
        catch(EOFException ende)
        {
            System.out.print("geladen2");
        }
        catch(FileNotFoundException e)
        {
            System.out.println("raeume.dat ist nicht vorhanden\n");
        
        }
        catch(Exception e)
        {
            System.out.println("\nFehler bei Räume laden");
        }
        
    }

aber leider kommt beim zweiten befehl in der whileschleife ein fehler und es ist nur das erste objekt in der liste...

vielleicht kann mir jemand weiterhelfen

danke schonmal im voraus

gruß
stephan
 

René Link

Aktives Mitglied
Hi,

was du in deiner ladeRaeume-Methode falsch machst ist, dass du in der while
Schleife immer wieder ein neues ObjectInputStream-Objekt erstellst. Erstens führt
soetwas zu einem erhöten Speicherverbauch der nicht sein muss und dadurch, dass
bei jedem Schleifendurchlauf die Referenz zum Objekt verloren geht, hat der Garbage Collector
mehr zu tun.
Zweitens gibt es noch das Header-Problem. Wenn du einen ObjectOutputStream öffnest
schreibt dieser einen Header in den darunterliegenden OutputStream. Also
in die Datei. Öffnest du einen ObjectInputStream so liest dieser den Header wieder
aus und kann jetzt mit Hilfe der Header Daten die Objekte lesen. Öffnest du
jetzt noch ein ObjectInputStream, welcher den gleichen darunterliegenden InputStream
wie der erste hat, dann kann dieser den Header nicht mehr lesen, weil der Dateizeiger schon
darüber gerückt ist. Dem zweiten ObjectInputStream fehlen jetzt wichtige Informationen, weshalb
er eine Exception wirft.

Lose das Problem in dem du den ObjectInputStream öffnest und dann solange benutzt wie du
Objekte aus der Datei liest.

Code:
static void ladeRaeume() 
    { 
        raum ein_raum = new raum(); 
        try 
        { 
            System.out.print("\n...lade Räume..."); 
            ObjectInputStream raum_in = new ObjectInputStream(new FileInputStream  "e:\\java\\oop\\freaks\\stundenplaneditor\\raeume.dat")); 
            
            ein_raum = (raum) raum_in.readObject(); 
            while(ein_raum != null) 
            { 
                raum_liste.add(ein_raum); 
                ein_raum = (raum) raum_in.readObject(); 
            } 
            System.out.print("geladen1"); 
        } 
        catch(EOFException ende) 
        { 
            System.out.print("geladen2"); 
        } 
        catch(FileNotFoundException e) 
        { 
            System.out.println("raeume.dat ist nicht vorhanden\n"); 
        
        } 
        catch(Exception e) 
        { 
            System.out.println("\nFehler bei Räume laden"); 
        } 
        
    }

Hinweis
Wenn du Objekte serialisierst müssen diese die Serializeable Schnittstelle implementieren. Bei Kompositionen
auch alle Komponenten des Objekts. Sonst werden diese nicht serialisiert.

Am einfachsten implementierst du die Schnittstelle so:
Code:
public class SimpleClassToSerialize implements Serializeable {

  private void writeObject(ObjectOutputStream oos) throws IOException {
    oos.defaultWriteObject();
  }
  private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
    ois.defaultReadObject();
  }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
S Fehler beim Programm Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
L Fehler beim laden eines Icons Java Basics - Anfänger-Themen 3
U Best Practice Fehleranalyse, welche Fehler macht Ihr beim Lernen bzw. auch später Java Basics - Anfänger-Themen 12
M GUI - Fehler abfangen beim Dividieren Java Basics - Anfänger-Themen 8
E Fehler beim Debuggen einer jsp-Datei Java Basics - Anfänger-Themen 3
J Fehler beim Runden Java Basics - Anfänger-Themen 3
V Klassen Fehler beim compilieren einer Datei in CamelCase Java Basics - Anfänger-Themen 2
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
B Input/Output Fehler beim Übertragen eines ObjectOutputStreams. Java Basics - Anfänger-Themen 0
T Fehler beim ActionListener Java Basics - Anfänger-Themen 2
W Fehler beim verlängern des Arrays Java Basics - Anfänger-Themen 5
S Fehler beim Ausführen Java Basics - Anfänger-Themen 5
S Seriealiserung Fehler beim Landen Java Basics - Anfänger-Themen 1
Matze 12 häufige Fehler beim Programmieren lernen Java Basics - Anfänger-Themen 2
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
N Fehler beim importieren vom package Java Basics - Anfänger-Themen 2
I beim auslesen der Properties gibt es ein Fehler Java Basics - Anfänger-Themen 7
T Fehler beim Schreiben in Dateien! Java Basics - Anfänger-Themen 4
A Erste Schritte Nicht zu findender Fehler beim Auslesen eines Buchstabens Java Basics - Anfänger-Themen 4
X Fehler beim Öffnen von Jar Datei: "kein Hauptmanifestattribut" Java Basics - Anfänger-Themen 5
B Erste Schritte Fehler beim starten Java Basics - Anfänger-Themen 12
A Resize-Fehler (nur) beim waagrecht Verkleinern Java Basics - Anfänger-Themen 5
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
1 Erste Schritte ständige Fehler beim Ausführen von Hello World Java Basics - Anfänger-Themen 6
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
F Genereller Fehler beim Starten des Javaprogramms Java Basics - Anfänger-Themen 3
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
F HttpURLConnection Fehler beim Quelltext holen Java Basics - Anfänger-Themen 6
S Fehler beim Auslösen des ActionListeners in Verbindung mit einer Queue Java Basics - Anfänger-Themen 5
D Fehler beim Compilen Java Basics - Anfänger-Themen 8
A Fehler beim Umschreiben in Array Java Basics - Anfänger-Themen 6
K Fehler beim Einfügen eines Programm Icons Java Basics - Anfänger-Themen 6
J Compiler-Fehler .jar Datei erstellt aber beim Ausführen Fehler Java Basics - Anfänger-Themen 5
M Fehler beim Übergeben von Daten an JTable Java Basics - Anfänger-Themen 14
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
S mögliche Fehler beim Initialisieren von Variablen Java Basics - Anfänger-Themen 19
N Datentypen Fehler beim Umwandeln in byte Java Basics - Anfänger-Themen 3
StrikeTom Fehler beim Audiodatei abspielen Java Basics - Anfänger-Themen 4
M Fehler beim Ausführen von runable Jar Java Basics - Anfänger-Themen 9
StrikeTom Fehler beim bildanzeigen Java Basics - Anfänger-Themen 10
A jexcelapi fehler beim einrichten Java Basics - Anfänger-Themen 2
M Fehler beim Compilieren Java Basics - Anfänger-Themen 2
S Fehler beim berechnen von MD5 Java Basics - Anfänger-Themen 7
M Fehler beim Compilieren Java Basics - Anfänger-Themen 4
J Fehler beim Ausführen von Programm Java Basics - Anfänger-Themen 3
D Class not found fehler beim ausführen unter konsole : / Java Basics - Anfänger-Themen 2
S Fehler beim Speichern von MP3-Stream Java Basics - Anfänger-Themen 6
R Derby-Datenbank: Fehler beim Zugriff im Embedded Modus Java Basics - Anfänger-Themen 27
G Fehler beim builden javax...... Java Basics - Anfänger-Themen 4
L Fehler beim Aufruf eines Applet Java Basics - Anfänger-Themen 2
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
C Fehler beim ausgführen von Java App als nicht Admin u. Vista Java Basics - Anfänger-Themen 6
G Fehler beim Ausführen HILFE! Java Basics - Anfänger-Themen 12
H JavaMail: Beim Versenden tritt ein Fehler auf! Java Basics - Anfänger-Themen 4
G Fehler beim ausführen einer JSP Java Basics - Anfänger-Themen 5
K Fehler beim complieren Java Basics - Anfänger-Themen 5
0 Folgender Fehler beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 8
R fehler beim incrementellen schreiben in einen vector Java Basics - Anfänger-Themen 11
O Linux - Fehler beim kompilieren - HILFE Java Basics - Anfänger-Themen 4
T Fehler beim Compilieren Java Basics - Anfänger-Themen 5
G Fehler beim Aufruf eine Javamethode über JSP Java Basics - Anfänger-Themen 8
G Fehler beim erneuten Öffnen von JInternalFrame Java Basics - Anfänger-Themen 7
R Fehler beim Programm Java Basics - Anfänger-Themen 20
G Fehler beim ausführen. Java Basics - Anfänger-Themen 3
W Fehler beim ausführen der Javadateien Java Basics - Anfänger-Themen 3
C Fehler beim build. nur wo? Java Basics - Anfänger-Themen 2
B Fehler beim einbinden eines Packages Java Basics - Anfänger-Themen 6
J Fehler beim Starten der .class Java Basics - Anfänger-Themen 21
V Fehler beim Kompilieren der Unterklasse Java Basics - Anfänger-Themen 2
G Fehler beim kompilieren Java Basics - Anfänger-Themen 18
E Fehler NullPointer beim Ausführen Java Basics - Anfänger-Themen 4
W Fehler beim Compilen Java Basics - Anfänger-Themen 9
D [JCreator] Einrichten - Fehler beim Kompilieren Java Basics - Anfänger-Themen 14
T Chaosprogrammierer hat einen fehler beim casten? Java Basics - Anfänger-Themen 5
D Fehler beim Aufrufen von Instanzvariablen Java Basics - Anfänger-Themen 5
M Problem beim Aufruf einer Methode: Wo is der Fehler? Java Basics - Anfänger-Themen 12
D Fehler beim kompilieren einer Java-Datei (javac) Java Basics - Anfänger-Themen 6
F Fehler beim Schreiben wenn Datei schreibgeschützt abfangen Java Basics - Anfänger-Themen 6
I Fehler beim Compilen Java Basics - Anfänger-Themen 10
T Fehler beim Laden eines Applets Java Basics - Anfänger-Themen 16
O Programm-Fehler beim einlesen von RGB werten Java Basics - Anfänger-Themen 5
F Fraktal fehler beim kompalieren Java Basics - Anfänger-Themen 5
M Fehler beim ein- und auslesen einer Textdatei Java Basics - Anfänger-Themen 5
L Fehler beim ausführen! Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben