Beim Serialisieren fehlt die letzte Zeile

Hallo,

wenn ich den XMLEncoder benutze, wird die XML zwar ertellt, aber es fehlt immer die letzte Zeile im XML Dokument. Konkret das "</java>". Hat jemand eine Idee woran das liegen kann, ohne dass ich den ganzen Code hier reinstellen muss?
 
Eventuell wird in dem XMLEncoder oder einem zwischenliegenden Stream gepuffert. Schon XMLEncoder.close() aufgerufen? Ansonsten: Wo lässt du den Output denn hinschreiben? In eine Datei? Und wie stellst du ganz genau fest, dass die letzte Zeile fehlt?
 
Also ich mache zunächst:
Code:
        fileOutputStreamPlay = new FileOutputStream("playlist.xml");
        encoderPlay = new XMLEncoder(fileOutputStreamPlay);
Dann kommt
Code:
encoderPlay.writeObject(p);
encoderPlay.flush();
Code:
  try{
            fileOutputStreamPlay.close();
            encoderPlay.close();
        }catch (IOException ex){
            ex.printStackTrace();
        }
Mich wundert, dass es immer die letzte Zeile ist, die fehlt.
 
Das Problem ist, dass du zuerst den fileOutputStream schließt und somit der encoderPlay.close() keine Chance mehr hat, das Postamble (siehe referenzierten JavaDoc) zu schreiben.
JavaDoc von close(): "This method calls flush, writes the closing postamble and then closes the output stream associated with this stream."
 
WEnn ich die Zeile manuell hinzufüge, klappt auch das laden der xml also scheint diese ansonsten korrekt zu sein
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben