今日も同じ問題がありました。質問はかなり古いものですが、問題は残っており、クリーンな解決策は提供されていませんでした。EOFException
一部のオブジェクトが正しく保存されなかった場合にスローされる可能性があるため、無視することは避けてください。nullを書き込むと、他の目的でnull値を使用できなくなります。最後available()
に、オブジェクトの数が不明なため、オブジェクトストリームで使用すると常にゼロが返されます。
私の解決策は非常に簡単です。ObjectInputStream
FileInputStreamなどの他のストリームの単なるラッパーです。ObjectInputStream.available ()
ゼロを返しますが、FileInputStream.availableはいくつかの値を返します。
FileInputStream istream = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(istream);
/** calculate number of items **/
int line_count = 0;
while( istream.available() > 0) // check if the file stream is at the end
{
(String)ois.readObject(); // read from the object stream,
// which wraps the file stream
line_count++;
}