黑马程序员技术交流社区

标题: StreamCorruptedException异常问题? [打印本页]

作者: 刘经鹏    时间: 2012-12-24 21:33
标题: StreamCorruptedException异常问题?
通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
作者: 冯伟超    时间: 2012-12-24 22:17
序列化id:
     我们把一个对象按照流的方式写入到文件中,它会同时有一个serialVersionUID值写入。
     表示我们的.txt文件和我们的class文件一一对应。
     当我们改动了java文件后,class文件就改变了,所以serialVersionUID值就变化了。
作者: 冯伟超    时间: 2012-12-24 22:19
如果你不太明白:下面我举一些列子你可以参考下:
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();
        }

}





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