A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 浮出一个美 于 2014-1-6 11:57 编辑

如果文件里有多个对象,而我又要一个对象一个对象的去读取,如果对象被读完了,还要继续读的话就会报EOF异常。
readObject()没有像read()独到末尾返回-1,也没有像readline()独到末尾返回null。他就是返回对象,读完了就异常。
我看别人又两种解决办法:
1.写对象文件的时候把对象的个数存储起来,这样子读的时候就知道有多少个对象了。
可是这样,还要单独持久化一个存储对象个数的数据
2.while(true),一直读,知道抛出异常,然后继续执行后面的动作,像这样
  1. ObjectInputStream ois = null;
  2.                 List<Person> list = new ArrayList<Person>();
  3.                 try {
  4.                         ois = new ObjectInputStream(new FileInputStream("obj.object"));
  5.                         while(true){
  6.                                 Person person = (Person) ois.readObject();
  7.                                 list.add(person);
  8.                         }
  9.                 } catch (Exception e) {
  10.                         e.printStackTrace();
  11.                 }
  12.                 for(Person p :list ){
  13.                         System.out.println(p.toString());
  14.                 }
复制代码

我感觉两种方法都不是很方便,请问大家还有什么更好的方法可以共享?

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

4 个回复

倒序浏览
jibenwujie 发表于 2014-1-3 10:17
楼主你好,这个问题要工作了才能解决

你是黑马姐姐吗?我现在正在努力查漏补缺知识中。
经过黑马的培训,是否会浴火重生?,火鸡变凤凰?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马