ObjectInputStream的readObject()方法读取对象问题

来源:互联网 发布:tap建站 编辑:程序博客网 时间:2024/05/17 09:38

对于含有多个Object对象的文件,如何读进内存,判读何时到了结尾,不外乎有下面两种途径:

/* * 若文件中有若干个Object对象,你用ObjectInputStream中的readObject()去读,何时判读到结尾? * 方法之一:(常用的方法)将若干个对象(数量不定)都装入一个容器中(如:ArrayList之类), * 然后将容器这一个对象写入就行了。读取时,只要读取一个对象(即容器对象)就行了;
方法二:(若不想用容器),则由于数量不定,正是用EOFException来判断结束。
 * 代码结构如下:(无论是readInt()读int,还是readObject()读对象)  * try{ *  while(true) { *   Object o=ois.radObject();  *   处理已读出的对象o;  *   } *  } *  catch(EOFException e){  *  //已从流中读完。  *  }  *  finallly { * 流的关闭。 } */
public class ObjectInputStreamDemo {    public static void main(String[] args) throws IOException, ClassNotFoundException {                FileInputStream fis = new FileInputStream("F:\\person.object");        ObjectInputStream osi = new ObjectInputStream(fis);                try {            while(true) {                Person p = (Person) osi.readObject();                System.out.println(p.getName()+":"+p.getAge());            }        }        catch(EOFException e) {                    }        finally {            osi.close();        }    }}
往文件里存多个对象也没问题,调用writeObject()一直往里写即可,readObject()一次返回一个对象,再readObject()一次返回第二个对象,自动在每个对象后面做标记。并且同一个文件中可以依次存入不同类的对象。先存入一个Person对象,再存入一个Demo对象,再存个Haha对象都可以。按顺序读就行了。

阅读全文
0 0