私は理解できない奇妙な問題に遭遇しました。 ファイルからデータを読み込むプログラムを作っています。しかし、私がデータを読み込むとすぐに、私はEOFExceptionを受け取ります。FileInputStream.available()はバイトを返しますが、ObjectInputStream.available()は0を返します
ファイルが空であるかどうかは、.available()で確認しました。そして私は奇妙な結果を得ました。 FileInputStreamはファイルがいっぱいになっていると言いましたが(249バイト)、ObjectInputStreamはファイルが空である(または読み込めない)と言っています。
EOFException at "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();
編集:私はこのようなファイルにコンテンツを追加している:
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();
それをシリアライズするとき、私は私の質問を編集したのと同じ順序でオブジェクト入力ストリームを読み込む必要があります。これで、ファイルをどの順番で埋めるかを確認できます。 – Guido
あなたの読み取り呼び出しは、書き込み呼び出しに対応していません。あなたの最初の書き込み呼び出しはオブジェクトですが、あなたの最初の読み込みはintです – Biu
うわー、私はそれに気付かなかった。ありがとうございました! – Guido