java中如何遍历反序列化流中的全部对象?

Hairui瑞 2019-08-11 05:10:53
想问问大神们应该怎么遍历反序列化流中的所有对象

首先通过序列化流向文件中存储了多个对象(这个代码执行了好几次添加的多个对象,确认对象都已经添加进文件中
)
    private void addStudent() throws IOException {//添加学生信息
Person person = new Person();//创建学生类对象
FileOutputStream fos = new FileOutputStream("whr\\src\\dormitory\\学生信息.txt",true);

System.out.println("请按 姓名 学号 年龄 性别 的格式输入学生信息:");
person.setName(sc.next());//将输入的姓名存到对象中
person.setStudentId(sc.nextInt());//将输入的学号存入到对象中
person.setAge(sc.nextInt());//将输入的年龄存入到对象中
person.setSex(sc.next());//将输入的性别存入到对象中
person.setRoom(-1);//先都分配0号宿舍
ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(person);//将对象存入文件中
oos.close();
}


然后现在想遍历文件中的所有对象,确抛出了
Exception in thread "main" java.io.StreamCorruptedException: invalid type code: AC
异常,如图:只出现了一个对象:


我使用的遍历代码是这个:
public class test {
public static void main(String[] args) throws IOException, ClassNotFoundException {
FileInputStream fis = new FileInputStream("whr\\src\\dormitory\\学生信息.txt");
// FileOutputStream fos = new FileOutputStream("whr\\src\\dormitory\\学生信息.txt");
ObjectInputStream ois = new ObjectInputStream(fis);

Person person = (Person)ois.readObject();//遍历反序列化中的所有对象
while (person != null){
System.out.println(person.getName()+person.getStudentId()+person.getSex()+person.getRoom());
person = (Person)ois.readObject();
}

ois.close();
}
}


想问问大神们应该怎么遍历反序列化流中的所有对象
...全文
405 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hairui瑞 2019-08-12
  • 打赏
  • 举报
回复
https://www.cnblogs.com/liaoweipeng/p/4474680.html你看看这个博客,这上面可以解决,我已经试过了
菜鸟①个 2019-08-11
  • 打赏
  • 举报
回复
https://blog.csdn.net/PAcee1/article/details/79641700 我参考这个博客也没搞定。。。。
菜鸟①个 2019-08-11
  • 打赏
  • 举报
回复
我自己也试过了,没有办法反序列化多个对象,建议使用其他序列化工具,比如fastjson

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧