黑马程序员技术交流社区

标题: ObjectInputStream [打印本页]

作者: 方青木    时间: 2014-3-19 18:23
标题: ObjectInputStream
ObjectInputStream中的readObject()方法,一次读取一个对象,当文件中写入了很多对象的序列,如何循环读取,最后返回的是什么?

作者: ╰つ    时间: 2014-3-19 20:32
  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.                 }
复制代码

作者: 方青木    时间: 2014-3-19 20:47
╰つ 发表于 2014-3-19 20:32

不会是用抛出异常来结束循环吧
作者: liuqufei    时间: 2014-3-20 01:11
循环很简单,for加add就可以了。给你找了个代码例子:
  1. <blockquote>import java.io.*;
复制代码

作者: liuqufei    时间: 2014-3-20 01:12
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;}
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2