Grupos de Google ya no admite nuevas publicaciones ni suscripciones de Usenet. El contenido anterior sigue siendo visible.

StreamCorruptedException beim Lesen der Datei

Visto 0 veces
Saltar al primer mensaje no leído

Sergej Berg

no leída,
8 oct 2002, 7:00:118/10/02
a
Hallo Welt!

Ich schreibe ein Vector in eine Datei.
Scheint auch wunderbar zu funktionieren.
Beim Versuch diese Datei zu lesen
Kommt manchmal der Fehler (1 aus 700):
java.io.StreamCorruptedException
java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
......

Und hier der Code:
###############################
Schreiben
###############################
public boolean write(Vector pVec){
FileOutputStream fStream;
ObjectOutputStream oStream;
try {
fStream = new FileOutputStream("meinedatei.dat");
oStream = new ObjectOutputStream(fStream);
oStream.writeObject(pVec);
oStream.close();
} catch (IOException e) {
System.err.println(e.toString());
return false;
}
return true;
}
###############################
Lesen
###############################

private Vector readIn(String psFileName, Vector pVec){
FileInputStream fStream;
ObjectInputStream oStream;
try {
fStream = new FileInputStream(psFileName);
oStream = new ObjectInputStream(fStream);

while(fStream.available()!=0 ){
pVec = (Vector)oStream.readObject();
}
oStream.close();
}catch (FileNotFoundException e) {
return (new Vector());
}
}catch (ClassNotFoundException e) {
System.err.println(e.toString());
return (new Vector());
}catch (IOException e) {
System.err.println(e.toString());
return (new Vector());
}
return pVec;
}
###############################
Ideen?

Gruß,
Sergej

Ingo R. Homann

no leída,
8 oct 2002, 8:02:408/10/02
a
Hi Sergej!

- Ich würde beim fangen einer Exception zumindest e.printStackTrace()
aufrufen, und nicht nur den Namen nach System.out ausgeben.

- Was passiert, wenn Du das lesen nicht in eine Schleife packst?
(schließlich schreibst Du ja auch nur einen einzigen Vector.)

- Was sind für Elemente in dem Vector drinnen? Sine die alle Serializable?

- Anstatt Vector sollte man ArrayList verwenden.

Just my 2 cents,
Ingo

Stephan Friedrichs

no leída,
8 oct 2002, 8:14:438/10/02
a
Sergej Berg schrieb:

> Hallo Welt!

Hallo Sergej!

>
> Ich schreibe ein Vector in eine Datei.

> [...]
> ###############################
> Schreiben
> ###############################

Schreiben ist ok.

> [...]


> Lesen
> ###############################
>
> private Vector readIn(String psFileName, Vector pVec){
> FileInputStream fStream;
> ObjectInputStream oStream;
> try {
> fStream = new FileInputStream(psFileName);
> oStream = new ObjectInputStream(fStream);
>
> while(fStream.available()!=0 ){

Hier liegt glaube ich das Problem - probier einfach:
pVec = (Vector) oStream.readObject();
ohne das while(fStream.available() != 0);
denn available() gibt nur die Zahl der bytes wieder, nicht die der
Objekte die im Moment available sind, also wenn die Festplatte gerade zu
viel zu tun hat oder das Netzwerk zu langsam ist kann das mal eine Weile
0 sein.

> [...]

> Ideen?

Sonst ist alles klar!

> Gruß,
> Sergej

HTH - Stephan

0 mensajes nuevos