带有 ObjectInputStream 的 EOFException

EOFException with ObjectInputStream

我读过其他与此类似的问题,但没有多大帮助。所以我在一个文件中有一些序列化的内容,我试图读取它并在控制台上打印它,内容打印正常但最后,它显示 EOFException。有什么方法可以修复我的代码以避免出现此异常吗?

try {
            File file = new File("EnrolledStudentsSerial.txt");
 
            FileInputStream fi = new FileInputStream(file);
            ObjectInputStream input = new ObjectInputStream(fi);
            while(true) {
                System.out.println(input.readObject());
            }
        } 
        catch (IOException | ClassNotFoundException e) {
            System.out.println("Error: " + e); 
        }

我认为你不想'avoid'这个例外。

您需要知道何时到达输入末尾,EOFException 告诉您您已经到达输入末尾。

相反,您想停止将其视为错误情况,因为它不是错误,所以它是正常的并且是预期的。

try {
   … code as before … 
} 
catch (EOFException e) {
   // end of input, nothing to do here
}
catch (IOException | ClassNotFoundException e) {
    System.out.println("Error: " + e); 
}