Ich stieß auf ein seltsames Problem, das ich anscheinend nicht verstehe. Ich mache ein Programm, das Daten aus einer Datei liest. Aber wenn ich Daten lese, erhalte ich sofort eine EOFException.FileInputStream.available() gibt Bytes zurück, aber ObjectInputStream.available() gibt 0 zurück
Also überprüfte ich mit. Available(), wenn die Datei leer war oder nicht. Und ich habe ein komisches Ergebnis bekommen. Der FileInputStream sagte, dass die Datei gefüllt war (249 Bytes), aber der ObjectInputStream sagte, dass die Datei leer ist (oder nicht gelesen werden kann).
EOFException um: "int signatureSize = ois.readInt();"
FileInputStream fin = new FileInputStream("input(signedbyLK).ext");
System.out.println("fin available: " + fin.available());
ObjectInputStream ois = new ObjectInputStream(fin);
System.out.println("ois avaiable: " + ois.available());
int signatureSize = ois.readInt();
byte[] sigBytes = (byte[]) ois.readObject();
String text = (String) ois.readObject();
ois.close();
EDIT: Ich bin das Hinzufügen von Inhalten in die Datei wie folgt aus:
File newFile = new File("input(signedbyLK).ext");
newFile.createNewFile();
System.out.println("Succesfully created new file: " + newFile.getName());
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(newFile));
oos.writeObject(sigBytes.length);
oos.writeObject(sigBytes);
oos.writeObject(readInput());
oos.close();
Ich habe meine Frage bearbeitet. Jetzt können Sie sehen, in welcher Reihenfolge ich die Datei befülle. – Guido
Ihre Leseaufrufe entsprechen nicht einmal den Schreibaufrufen. Ihr erster Schreibaufruf ist ein Objekt, aber Ihr erster Lesevorgang ist ein int – Biu
Wow, das habe ich nicht einmal bemerkt. Vielen Dank! – Guido