从java中的二进制文件中读取序列化对象?

我有一个简单的问题。

如何在java中读取二进制文件的所有内容?

我写了一些代码,但它只检索第一个对象。

这是我的代码:

ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:\\Users\\فاطمة\\Downloads\\student.bin")); Binary b2 = (Binary)in.readObject(); System.out.println("Student ID: " + b2.id); System.out.println("Student Name: " + b2.name); System.out.println("Student Grade: " + b2.grade); in.close(); 

作为malinator提到,将序列化对象连接在一个文件中是不好的做法,它们应该包含在Collection中。

如果您无权访问生成该文件的代码,则可能存在以下两种情况:

  • 要么您知道对象的数量,那么您可以执行正确数量的ObjectInputStream.readObject()调用,最好使用for循环
  • 或者你没有,那么问题是检测到文件的结尾。 你可以使用while循环和try/catch(EOFException)