Creating a new ObjectInputStream without closing the underlying FileInputStream solves this problem:
FileInputStream fin = new FileInputStream(file);
while (...) {
ObjectInputStream oin = new ObjectInputStream(fin);
Object o = oin.readObject();
...
}
fin.close();