Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

StreamCorruptedException beim Lesen der Datei

0 views
Skip to first unread message

Sergej Berg

unread,
Oct 8, 2002, 7:00:11 AM10/8/02
to
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

unread,
Oct 8, 2002, 8:02:40 AM10/8/02
to
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

unread,
Oct 8, 2002, 8:14:43 AM10/8/02
to
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 new messages