Hallo zusammen,
ich habe vor kurzem mit Java begonnen, um für einen Bekannten eine weitere Funktion in ein bestehendes Programm zu programmieren. Das Programm wurde um 2000 programmiert und ich habe nun folgendes Problem.
Soweit ich das verstanden habe, werden bestimmt Projekt-Dateien mit Serialisierung angelegt.
Wenn ich nun versuche, ältere Projekt-Dateien wieder zu deserialisieren, wird ein Fehler bei "this.slist = (SynthesisList) instream.readObject();" erzeugt und es ist mir nicht möglich diese Datei zu öffnen bzw. wieder in ein Objekt zu schreiben.
Wenn ich mit den Programm eine neue Projekt-Datei erzeugte, funktioniert die Deserialisierung ohne Probleme.
Mein Gedanke war, dass ich evtl. eine Codierung mit angeben kann, wenn ich den InputStream erzeuge. Leider bin ich dann immer auf den BufferedReader gestoßen und nicht wirklich weiter gekommen.
Anmerkung:
-Ich benutze die IDE NetBeans 8.2 mit JDK 8
-Als ich die Source-Dateien in ein Projekt angelegt hatte, muss ich nachträglich auf die codierung "windows-1252" wechseln, um das Programm zu compilieren... So kam ich auf die oben genannte "Idee".
Der Code-Teil sieht wie folgt aus:
Hätte jemand evtl. einen Ansatz wo ich weiter machen könnte?
Vielen Dank für die Mühe!
Beste Grüße
ich habe vor kurzem mit Java begonnen, um für einen Bekannten eine weitere Funktion in ein bestehendes Programm zu programmieren. Das Programm wurde um 2000 programmiert und ich habe nun folgendes Problem.
Soweit ich das verstanden habe, werden bestimmt Projekt-Dateien mit Serialisierung angelegt.
Wenn ich nun versuche, ältere Projekt-Dateien wieder zu deserialisieren, wird ein Fehler bei "this.slist = (SynthesisList) instream.readObject();" erzeugt und es ist mir nicht möglich diese Datei zu öffnen bzw. wieder in ein Objekt zu schreiben.
Wenn ich mit den Programm eine neue Projekt-Datei erzeugte, funktioniert die Deserialisierung ohne Probleme.
Mein Gedanke war, dass ich evtl. eine Codierung mit angeben kann, wenn ich den InputStream erzeuge. Leider bin ich dann immer auf den BufferedReader gestoßen und nicht wirklich weiter gekommen.
Anmerkung:
-Ich benutze die IDE NetBeans 8.2 mit JDK 8
-Als ich die Source-Dateien in ein Projekt angelegt hatte, muss ich nachträglich auf die codierung "windows-1252" wechseln, um das Programm zu compilieren... So kam ich auf die oben genannte "Idee".
Der Code-Teil sieht wie folgt aus:
Java:
private final void load(File file, boolean all) throws ExtException {
if (file==null) {throw new ExtException("E_file_null");}
if (!file.exists()) {throw new ExtException("E_file_not_ext");}
if (!file.canRead()) {throw new ExtException("E_file_not_readable");}
try{
FileInputStream fin = new FileInputStream(file);
GZIPInputStream zin = new GZIPInputStream(fin);
ObjectInputStream instream = new ObjectInputStream(zin);
String c=(String) instream.readObject();
if (!c.equals("CRAP v0.1.1 Proj")) {throw new Exception("readerror");}
this.creation_date=((Long) instream.readObject()).longValue();
this.lastmodified=((Long) instream.readObject()).longValue();
this.comment = (String) instream.readObject();
if (all)
{
this.slist = (SynthesisList) instream.readObject();
reset();
} // mit reset
fin.close();
//fin.close();
} catch (Exception E){
if (E instanceof ExtException){
if (E.getMessage().equals("readerror")) {throw new ExtException("E_not_proj_file");}
}
throw new ExtException("E_proj_file_err");
}
this.file=file;
}
Hätte jemand evtl. einen Ansatz wo ich weiter machen könnte?
Vielen Dank für die Mühe!
Beste Grüße