ObjectInputStream 如何循环读取所有的对象
时间: 2024-05-15 18:15:47 浏览: 96
java面向对象面试题
使用 ObjectInputStream 的 readObject() 方法读取对象时,需要在循环中判断流的末尾,如果读取到了流的末尾,readObject() 方法会抛出 EOFException 异常,此时可以结束循环。
以下是一个使用 ObjectInputStream 循环读取所有对象的示例代码:
```
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("data.txt"))) {
while (true) {
try {
Object obj = ois.readObject();
// 处理读取到的对象
} catch (EOFException e) {
// 已经读取到流的末尾,结束循环
break;
}
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
```
需要注意的是,ObjectInputStream 读取对象时,需要按照写入对象的顺序进行读取。如果写入对象的顺序被打乱,读取时也需要按照相应的顺序进行读取,否则会出现类型转换异常。
阅读全文