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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jing迪 高级黑马   /  2013-12-31 12:22  /  758 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.io.*;


  2. /**
  3. * 把对象存储在硬盘叫做对象的持久化存储,也叫对象的序列化
  4. * 对象的序列化
  5. * */
  6. public class ObjectStreamDemo {

  7.         /**
  8.          * @param args
  9.          * @throws IOException
  10.          * @throws ClassNotFoundException
  11.          */
  12.         public static void main(String[] args) throws IOException, ClassNotFoundException {

  13. //                writeObj();
  14.                 readObj();
  15.         }
  16.         
  17.         public static void readObj() throws FileNotFoundException, IOException, ClassNotFoundException{
  18.                 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));
  19.                 //笨方法取出4个Person对象
  20.                 Person p1 = (Person) ois.readObject();
  21.                 Person p2 = (Person) ois.readObject();
  22.                 Person p3 = (Person) ois.readObject();
  23.                 Person p4 = (Person) ois.readObject();
  24.                 System.out.println(p1);
  25.                 System.out.println(p2);
  26.                 System.out.println(p3);
  27.                 System.out.println(p4);
  28.                 ois.close();
  29.         }
  30.         /**
  31.          * 将对象Person存储起来放在obj.txt中
  32.          * */
  33.         public static void writeObj() throws IOException{
  34.                 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.txt"));
  35.                
  36.                 oos.writeObject(new Person("zhangsan",21));
  37.                 oos.writeObject(new Person("lisi",24));
  38.                 oos.writeObject(new Person("xiaoming",33));
  39.                 oos.writeObject(new Person("guange",30));
  40.                 oos.close();
  41.         }
  42. }
复制代码
  1. import java.io.Serializable;

  2. public class Person implements Serializable{

  3.         private static final long serialVersionUID = 1L;
  4.         private String name;
  5.         private int age;
  6.         Person(String name,int age){
  7.                 this.name = name;
  8.                 this.age = age;
  9.         }
  10.         public String toString(){
  11.                 return name+":"+age;
  12.         }
  13. }
复制代码

添加四个Person 对象到文本中,上面为笨方法取出4个Person对象;如何循环输出4个Person对象,求思路,求解答

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 神马都是浮云

查看全部评分

2 个回复

倒序浏览
  1. while(Person p=(Person)ois.readObject()){
  2.     System.out.println(p);
  3. }
复制代码

你试试看
回复 使用道具 举报
本帖最后由 猎鹰tianya 于 2014-1-10 17:32 编辑
ois.readObject()每次会读取一个对象,读取多个,可以用循环。
你可以这么写:{:soso_e128:}
  1. public static void readObj() throws Exception {
  2.    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));
  3.    for (int i = 0; i < 4; i++)//for循环,一直很好用,我的首选!!!
  4.    {
  5.      System.out.println((Person) ois.readObject());//从硬盘读取对象并打印打控制台
  6.    }
  7.      ois.close();
  8. }
复制代码





评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

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