Hallo alle zusammen,
ich hab folgendes Problem:
Ich hab eine Klasse "Message", die Externalizable implementiert und dabei 1x short und 1x long schreibt. Beim wieder einlesen schmeisst Java eine java.io.EOFException in Zeile 24 der "Message"-Klasse. Ich hab keine Ahnung, warum. Der Text ist der Ausgabe-Datei ist kryptisch, aber immerhin vorhanden.
Meine Message Klasse:
und eine Klasse, die das ganze testet:
So, wie mir scheint, läuft irgendwas beim Lesen schief. Muss man noch irgendwie auf EOF achten und das irgendwie abfangen?
Was mich auch wundert: Die EOFException tritt schon in Zeile 24 auf, in der Datei sollte also zumindest noch das Long-Object folgen, also noch kein EOF.
Danke für Hilfe,
Daishi1002
ich hab folgendes Problem:
Ich hab eine Klasse "Message", die Externalizable implementiert und dabei 1x short und 1x long schreibt. Beim wieder einlesen schmeisst Java eine java.io.EOFException in Zeile 24 der "Message"-Klasse. Ich hab keine Ahnung, warum. Der Text ist der Ausgabe-Datei ist kryptisch, aber immerhin vorhanden.
Meine Message Klasse:
Code:
import java.io.*;
public class Message implements Externalizable{
private short timeToLive;
private long messageId;
//Constructor 1
Message(){
messageId = 0;
timeToLive = 0;
}
//Constructor 2
Message(short ttl, long id){
messageId = id;
timeToLive = ttl;
}
public void writeExternal(ObjectOutput out) throws IOException {
out.writeShort(timeToLive);
out.writeLong(messageId);
}
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException{
timeToLive = in.readShort();
messageId = in.readLong();
}
}
und eine Klasse, die das ganze testet:
Code:
import java.io.*;
public class Starter {
public static void main(String[] args) {
Message test = new Message((short)5, (long)1001);
Message test2 = new Message();
ObjectOutputStream out = null;
ObjectInputStream in = null;
try{
//Erst schreiben:
out = new ObjectOutputStream(new FileOutputStream("test.dat"));
out.writeObject(test);
out.flush();
out.close();
System.out.println("Fertig");
//dann lesen:
in = new ObjectInputStream(new FileInputStream("test.dat"));
test2.readExternal(in);
//Ausgabe testen
System.out.println(test2);
}catch(Exception e){
e.printStackTrace();
}
}
}
So, wie mir scheint, läuft irgendwas beim Lesen schief. Muss man noch irgendwie auf EOF achten und das irgendwie abfangen?
Was mich auch wundert: Die EOFException tritt schon in Zeile 24 auf, in der Datei sollte also zumindest noch das Long-Object folgen, also noch kein EOF.
Danke für Hilfe,
Daishi1002