ファイル(クラスの同じオブジェクト)から、Serializableを使用してオブジェクトを読み取ろうとしていますが、すべてのオブジェクトを読み取るとエラーIOException
,java.io.ObjectInputStream$BlockDataInputStream.peekByte
が返されます。ファイルから複数の同じオブジェクトを読み取る方法
私はオブジェクトを読んで、リストに保存しています。しかし、それが到達すると、EOFと言えばエラーを投げます。ここで
は私の方法である:
private static void updateBook(String name) {
// TODO Auto-generated method stub
FileInputStream fis = null;
ObjectInputStream in = null;
Object obj = new Object();
List<Object> libb = new ArrayList<Object>();
File file = new File(name + ".ser");
if (file.exists()) {
try {
fis = new FileInputStream(file);
in = new ObjectInputStream(fis);
try {
while (true) {
obj = in.readObject();
libb.add(obj);
}
} catch (OptionalDataException e) {
if (!e.eof) throw e;
//JOptionPane.showMessageDialog(null, "Done!");
} finally {
in.close();
//fis.close();
}
for(int j = 0; j < libb.size(); ++j) {
Book li = new Book();
li = (Book) libb.get(j);
System.out.println(li.getBookName());
}
//
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} else {
System.out.println("\nThe file does not Exist!");
}
}
誰がwhile(true)
からこのエラーを回避する方法を教えてくださいすることができます。
コンプリートエラー:
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
の可能性のある重複した[?完全にJavaでのファイルからのオブジェクトのストリームを読み込むための最良の方法は何ですか](HTTP: //stackoverflow.com/questions/5046033/what-is-the-best-way-to-fully-a-stream-of-objects-from-a-file-in-java) – aribeiro
@aribeiroその異なる、なぜなら私はfinally節を持っていて、まだEOFエラーが出ているからです。 – Erjan
真ですが、 'EOFException'のキャッチはありません。 – aribeiro