黑马程序员技术交流社区

标题: 关于对象序列化问题 [打印本页]

作者: 逆世界ylm    时间: 2014-12-22 20:50
标题: 关于对象序列化问题
  1. package com.ccus.test;

  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;

  8. public class TestPerson {
  9.         public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
  10.                 read();
  11.         }
  12.         public static void read() throws FileNotFoundException, IOException, ClassNotFoundException
  13.         {
  14.                 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:\\test\\obj.txt"));
  15.                 Person p = null;
  16.                 while((p=(Person)ois.readObject()) != null)//会报错
  17.                 {
  18.                         System.out.println(p);
  19.                 }
  20.                 System.out.println(p);
  21.         }
  22.         public static void write() throws FileNotFoundException, IOException
  23.         {
  24.                 Person p = new Person("叶立民",20,"男");
  25.                 Person p1 = new Person("叶虎",30,"男");
  26.                 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:\\test\\obj.txt"));
  27.                 oos.writeObject(p);
  28.                 oos.writeObject(p1);
  29.                 oos.close();
  30.         }
  31. }
复制代码
在毕老师的视频中,我们通过序列化存入一个对象到硬盘上,并且可以再次读出来,但是当我们存储多个对象到一个文件,可以吗?然后怎么读出来??,我试着可以存储多个对象进入文件,而且可以读出来,但是读出来后报错,ObjectInputStream读取Object以什么来判断结束??求大神指导

作者: kerner    时间: 2014-12-22 23:45
readObjec()方法读取到文件末尾会抛出IO异常,你可以在代码中处理该异常啊。
  1.        public static void read() throws Exception
  2.         {
  3.                 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));
  4.                 Person p = null;
  5.                 while(true)
  6.                 {
  7.                         
  8.                                                 try {
  9.                                                         p=(Person)ois.readObject();
  10.                                                 } catch (ClassNotFoundException e) {
  11.                                                         System.out.println("没有该类型");
  12.                                                 } catch (IOException e) {
  13.                                                         System.out.println("数据已经读完");
  14.                                                         break;
  15.                                                 }
  16.                         System.out.println(p);
  17.                 }
  18. ois.close();
  19.         }
复制代码





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