Hallöchen!
Ich hab zur Zeit mal wieder ein Problem. Ich will in eine Datei Objekte schreiben und wieder auslesen.
In diesem Fall eine Collection (bzw die Objekte in der Collection, ist eigtl egal).
An sich kein Problem, aber beim Lesen wird eine Exception gecatchet, sobald ich readObject() aufrufen will, und ich finde nicht raus weshalb! Das Schreiben funktioniert problemlos, Datei existiert, mit Inhalt.
Vielleicht könnt ihr mir ja helfen ... Hier der Quellcode:
Die Sys.outs sind zur Überprüfung, wo genau der Fehler auftritt.
Die Ausgabe sieht wie folgt aus:
1
2
3
4
Beim Lesen der Datei ist ein Fehler aufgetreten.
[]
Ich hab zur Zeit mal wieder ein Problem. Ich will in eine Datei Objekte schreiben und wieder auslesen.
In diesem Fall eine Collection (bzw die Objekte in der Collection, ist eigtl egal).
An sich kein Problem, aber beim Lesen wird eine Exception gecatchet, sobald ich readObject() aufrufen will, und ich finde nicht raus weshalb! Das Schreiben funktioniert problemlos, Datei existiert, mit Inhalt.
Vielleicht könnt ihr mir ja helfen ... Hier der Quellcode:
Java:
public static void writeFiguresToFile(Collection<GeoFigur> c, String filename) throws IOException{
File f = new File("output/" + filename);
try{
f.createNewFile();
}catch(IOException e){
System.out.println("Datei existiert bereits.");
}finally{
OutputStream fos = null;
try {
fos = new FileOutputStream("output/" + filename);
ObjectOutputStream o = new ObjectOutputStream( fos );
o.writeObject(c);
o.flush();
}catch(IOException io){
System.out.println("In die Datei kann leider nicht geschrieben werden.");
}finally{
if(fos!=null){
fos.close();
}
}
}
}
public static Collection<GeoFigur> readFiguresFromFile(String filename) throws ClassNotFoundException, IOException{
InputStream fin = null;
Collection<GeoFigur> figuren = new HashSet<GeoFigur>();
try {
System.out.println("1");
fin = new FileInputStream("output/" + filename);
System.out.println("2");
ObjectInputStream o = new ObjectInputStream(fin);
System.out.println("3");
while(o.readObject()!=null){
System.out.println("4");
if (o.readObject() instanceof Collection<?>){
figuren = (Collection<GeoFigur>) o.readObject();
System.out.println("5");
}
}
System.out.println("6");
return figuren;
}catch(IOException io){
System.out.println("Beim Lesen der Datei ist ein Fehler aufgetreten.");
return figuren;
}catch(ClassNotFoundException e){
System.out.println("Klasse wurde nicht gefunden.");
return figuren;
}
finally{
if(fin!=null){
fin.close();
}
}
}
Die Sys.outs sind zur Überprüfung, wo genau der Fehler auftritt.
Die Ausgabe sieht wie folgt aus:
1
2
3
4
Beim Lesen der Datei ist ein Fehler aufgetreten.
[]