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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 逆世界ylm 中级黑马   /  2014-12-22 20:50  /  821 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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以什么来判断结束??求大神指导

1 个回复

正序浏览
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.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马