Avatar billede phbecker Nybegynder
04. november 2007 - 15:15 Der er 4 kommentarer

Deserialization af vilkårligt mange objekter

Jeg har serialized et antal objekter i en fil, og prøver at deserialize dem med en ObjectInputStream - f.eks.:

while((tempSub = (Subscriber)ois.readObject()) != null)
{
... // tilføj til en ArrayList
}

Problemet er så, at den deserializer alle gemte objekter korrekt, men den kan tilsyneladende ikke finde ud af at stoppe ved EOF, da jeg får en java.io.EOFException. Hvordan kunne man mon lave en løkke, der gennemløb antallet af serialized objekter i filen, og derefter stopper korrekt?

På forhånd tak!
Avatar billede arne_v Ekspert
04. november 2007 - 15:32 #1
Der er ikke noget i dokumentationen som siger at readObject returnerer null ved EOF.

Har du prøvet:

while(ois.available() > 0) {
    tempSub = (Subscriber)ois.readObject();
    ...
}

?
Avatar billede arne_v Ekspert
04. november 2007 - 15:33 #2
Ellers må du enten gemme så du ved hvor mange objekter der er eller catche EOFException.
Avatar billede phbecker Nybegynder
04. november 2007 - 15:57 #3
Tak for det! available()-metoden kunne ikke bruges, så jeg catcher blot exception og slipper ud af det på den måde.
Avatar billede arne_v Ekspert
12. november 2007 - 03:06 #4
jeg smider et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester