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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 方青木 中级黑马   /  2014-3-19 18:23  /  1315 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ObjectInputStream中的readObject()方法,一次读取一个对象,当文件中写入了很多对象的序列,如何循环读取,最后返回的是什么?

4 个回复

倒序浏览
  1.          try {
  2.                         ObjectInputStream inputStream=new ObjectInputStream(new FileInputStream("D:\\cc"));
  3.                 while (true) {
  4.                        
  5.                
  6.                                 student student=(student)inputStream.readObject();
  7.                                 System.out.println(student.getName());
  8.                 }
  9.                        
  10.                                
  11.                        
  12.                          
  13.                        
  14.                 } catch (Exception e) {
  15.                         // TODO Auto-generated catch block
  16.                         System.out.println("----读取完毕----");
  17.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报

不会是用抛出异常来结束循环吧
回复 使用道具 举报
循环很简单,for加add就可以了。给你找了个代码例子:
  1. <blockquote>import java.io.*;
复制代码
回复 使用道具 举报
import java.io.*;
import java.util.ArrayList;
public class SerializableTest {
        public static void main(String[] args) throws Exception{
                //保存对象的文件,这个要根据自己需要重新调整的,我这个是在Linux下的目录结构
                File f = new File("/home/lsx/person.dat");
                //创建一个集合类,用于存放person对象
                ArrayList ps = new ArrayList();
                //将10个person对象放入到集合中
                for(int i=0; i<10; i++)
                        ps.add(new Person("person"+i,i));
               
                //因为ArrayList类已实现了序列化,所以可以将ArrayList对ps存入文件
                //也就是说,现在保存的是一个集合,里边的内容是Person对象
                IO.save(ps, f);
               
                //从文件中将这个集合读取出来
                Object o = IO.load(f);
                ArrayList list = (ArrayList)o;
               
                //打印这个集合中的内容
                for(int i=0; i<list.size(); i++)
                        System.out.println(list.get(i));
                }
}

class IO{
        //保存对象到文件
        static void save(Object obj,File f) throws Exception{
                ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(f));
                oos.writeObject(obj);
                oos.flush();
                oos.close();
               
        }
        //从文件读取对象
        static Object load(File f) throws Exception{
                ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f));
                Object obj = ois.readObject();
                ois.close();
                return obj;
        }
}

//要想Person能以对象的形式保存到文件,Person类必须实现序列化:Serializable
class Person implements Serializable{
        private static final long serialVersionUID = 6213933727640755594L;
        private String name;
        private int id;
       
        Person(String n,int i){
                name=n;id=i;
        }
        public String getName(){return name;}
        public int getId(){return id;}
        public String toString(){return "name:"+name+"  id:"+id;}
}

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马