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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 王金科 于 2012-8-23 15:37 编辑
  1. package cn.study.file;

  2. import java.io.*;

  3. public class ObjectStreamDemo {

  4.         /**
  5.          * @param args
  6.          */
  7.         public static void main(String[] args) throws Exception
  8.         {
  9.                 //writeObj();
  10.                 readObj();               
  11.         }

  12.         public static void readObj() throws Exception
  13.         {
  14.                 ObjectInputStream ois =
  15.                         new ObjectInputStream(new FileInputStream("person.object"));
  16.                 Person p = (Person)ois.readObject();
  17.                 System.out.println(p);
  18.                 ois.close();
  19.         }

  20.         public static void writeObj() throws Exception
  21.         {
  22.                 ObjectOutputStream oos =
  23.                         new ObjectOutputStream(new FileOutputStream("person.object"));
  24.                 oos.writeObject(new Person("李四1",29));
  25.                 oos.writeObject(new Person("李四2",29));
  26.                 oos.writeObject(new Person("李四3",39));
  27.                 oos.close();
  28.         }
  29. }
复制代码
oos.writeObject(new Person("李四1",29));
                oos.writeObject(new Person("李四2",29));
                oos.writeObject(new Person("李四3",39));
我添加了3次
readObj();         中只显示出了第一个,怎么让后面两个在控制台上显示出来啊?

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
package com.itheima.test;



import java.io.*;

public class ObjectStreamDemo {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception
        {
                writeObj();
                readObj();               
        }

        public static void readObj() throws Exception
        {
                ObjectInputStream ois =
                        new ObjectInputStream(new FileInputStream("person.object"));
                Person p =null; //(Person)ois.readObject();
                for (int i = 0; i < 3; i++)
                        {
                 p=(Person)ois.readObject();
                System.out.println(p.getAge()+p.getName());
                        }
                ois.close();
        }

        public static void writeObj() throws Exception
        {
                ObjectOutputStream oos =
                        new ObjectOutputStream(new FileOutputStream("person.object"));
                oos.writeObject(new Person("李四1",29));
                oos.writeObject(new Person("李四2",29));
                oos.writeObject(new Person("李四3",39));
                oos.close();
        }
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
杨鹏鹏 发表于 2012-8-20 00:15
package com.itheima.test;

这样确实多到了三个,我还有一个问题,
这里我们是知道只有三条内容,假设我们不知道文件里有多少条内容,变量x长度我们怎么去确定?
回复 使用道具 举报
可以用以下代码实现:
  1. public static void readObj() throws Exception

  2.     {

  3.             ObjectInputStream ois =

  4.                     new ObjectInputStream(new FileInputStream("person.object"));
  5.            Object obj;
  6.            
  7.             try {
  8.                                 while ((obj = ois.readObject()) != null) {
  9.                                         Person p = (Person) obj;
  10.                                         System.out.println(p.name);
  11.                                 }
  12.                         } catch (Exception e) {
  13.                                 // TODO: handle exception
  14.                         }
  15.                         ois.close();

  16.     }
复制代码
回复 使用道具 举报
邓超军 发表于 2012-8-20 08:14
可以用以下代码实现:

原来可以用变量obj来判断啊,我一直想要用一个标记来判断一下,就是没想到可以用Object,这下太好了,解决了,谢谢哥们
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马