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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘经鹏 中级黑马   /  2012-12-24 21:33  /  1621 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

2 个回复

正序浏览
如果你不太明白:下面我举一些列子你可以参考下:
public class ObjectDemo
{

        /**
         * @param args
         * @throws IOException
         * @throws FileNotFoundException
         * @throws ClassNotFoundException
         */
        public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException
        {
                Person p1=new Person("小刚",34);
                //show_1(p1);
                show_2(p1);
               

        }

        private static void show_2(Person p) throws FileNotFoundException, IOException, ClassNotFoundException
        {
                ObjectInputStream obi=new ObjectInputStream(new FileInputStream("avn.txt"));
                //Object obj=new Object();
               
                Object        obj = obi.readObject();
                        p=(Person)obj;
                        System.out.println(p.getName()+"***"+p.getAge());
       
               
               
        }

        public static void show_1(Person p) throws IOException, IOException
        {
               
                ObjectOutputStream obs=new ObjectOutputStream(new FileOutputStream("avn.txt"));
                //序列化解决问题一:在对象中实现序列化接口Serializable,这个是针对对象的操作而言的
                obs.writeObject(p);
               
               
               
                //序列话的问题解决问题方式二:
                /* try
                {
                        obs.writeObject(p);
                } catch (NotSerializableException e)
                {
                        // TODO Auto-generated catch block
                        //e.printStackTrace();
                }*/
                 obs.flush();
                 obs.close();
        }

}

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
序列化id:
     我们把一个对象按照流的方式写入到文件中,它会同时有一个serialVersionUID值写入。
     表示我们的.txt文件和我们的class文件一一对应。
     当我们改动了java文件后,class文件就改变了,所以serialVersionUID值就变化了。

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

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