Hallo zusammen,
ich habe folgende Situation: Ich habe ein Programm geschrieben das ein Object serialisiert und auch wieder einlesen kann.
Das funktioniert auch wunderbar doch bei einer Datei bekomme ich folgenden Fehler beim einlesen:
java.io.StreamCorruptedException: invalid type code: 30
Hab zwei Infos im Netz gefunden: Die Datei wird beim schreiben noch geändert (könnte bei mir der Fall sein, da das speichern in nem Thread ausgelagert wurde) [Link]oder weil der header öfters in die Datei geschrieben wird [Link] ...
Woher finde ich raus, was bei mir schief lief?
Und noch viel wichtiger: Kann ich das serialisierte Objekt irgendwie "fixen" um es doch einzulesen? Da sind sehr wichtige Infos drin, die sonst wieder neu erstellt werden müssten.
Mein Code:
Schonmal Danke im Voraus für eure Hilfe
ich habe folgende Situation: Ich habe ein Programm geschrieben das ein Object serialisiert und auch wieder einlesen kann.
Das funktioniert auch wunderbar doch bei einer Datei bekomme ich folgenden Fehler beim einlesen:
java.io.StreamCorruptedException: invalid type code: 30
Hab zwei Infos im Netz gefunden: Die Datei wird beim schreiben noch geändert (könnte bei mir der Fall sein, da das speichern in nem Thread ausgelagert wurde) [Link]oder weil der header öfters in die Datei geschrieben wird [Link] ...
Woher finde ich raus, was bei mir schief lief?
Und noch viel wichtiger: Kann ich das serialisierte Objekt irgendwie "fixen" um es doch einzulesen? Da sind sehr wichtige Infos drin, die sonst wieder neu erstellt werden müssten.
Mein Code:
Code:
public void storeFile(String file, Object obj) {
OutputStream fos = null;
try {
fos = new FileOutputStream(file);
ObjectOutputStream o = new ObjectOutputStream(fos);
o.writeObject(obj);
} catch (IOException e) {
Logger.getLogger(MainModel.class.getName()).log(Level.WARNING, "Problem while serializing: {0}", e);
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (Exception e) {
}
}
}
Code:
private Object loadFile(String filePath) {
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(filePath);
ois = new ObjectInputStream(fis);
Object result = ois.readObject();
ois.close();
Logger.getLogger(Testwriter.class.getName()).log(Level.INFO, "{0} wurde gefunden.", filePath);
return result;
} catch (FileNotFoundException ex) {
Logger.getLogger(Testwriter.class.getName()).log(Level.WARNING, "{0} nicht vorhanden", filePath);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Testwriter.class.getName()).log(Level.WARNING, null, ex);
} catch (IOException ex) {
Logger.getLogger(Testwriter.class.getName()).log(Level.WARNING, null, ex);
} finally {
try {
if (fis != null) {
fis.close();
}
if (ois != null) {
ois.close();
}
} catch (IOException ex) {
Logger.getLogger(Testwriter.class.getName()).log(Level.FINE, null, ex);
} catch (NullPointerException ex) {
Logger.getLogger(Testwriter.class.getName()).log(Level.FINE, null, ex);
}
}
return null;
}
Schonmal Danke im Voraus für eure Hilfe