黑马程序员技术交流社区

标题: 请教一个JAVA对象的序列化和反序列问题 [打印本页]

作者: STRUGGLE    时间: 2014-1-3 19:09
标题: 请教一个JAVA对象的序列化和反序列问题
为什么需要序列化和返回序列化?对象的序列化主要什么用途啊?请教大神解答。。最好有相关代码说明哦!谢谢啦。。。

作者: 范晓冲    时间: 2014-1-4 16:56
本帖最后由 范晓冲 于 2014-1-4 16:58 编辑

为什么需要序列化和反序列化?
                当两个进程在进行远程通信时,彼此可以发送各种类型的数据。
                无论是何种类型数据,都会以二进制序列的形式在网络上传送。
                发送方需要把这个Java对象转换为字节序列,才能在网络上传送;
                接收方则需要把字节序列再恢复为Java对象。
        把Java对象转换为字节序列的过程称为对象的序列化
        把字节序列转换为Java对象的过程称为对象的反序列化

序列化和反序列化的步骤和实例
1、Person类实现Serializable接口:
class Person implements Serializable{
                int age;
                String name;
                public Person(int age,String name){
                                super();
                                this.age=age;
                                this.name=name;
                }
}
2、通过ObjectOutputStream将Person对象的数据写入到文件中,即序列化

                Person person=new Person(22,"laofan");
                FileOutputStream fos=null;
                ObjectOutputStream oos=null;
               
                //序列化
                fos=new FileOutputStream("d:/p.txt");
                oos=new ObjectOutputStream(fos);

                oos.writeObject(person);
                oos.flush();
                oos.close();
                fos.close();

3、通过ObjectInputStream将文件中二进制数据反序列化成Person对象:

                ObjectInputStream ois=null;
                FileInputStream fis=null;
               
                //反序列化
                fis=new FileInputStream("d:/p.txt");
                ois=new ObjectInputStream(fis);
                Person p=()ois.readObject();
                System.out.println(p.name);
作者: STRUGGLE    时间: 2014-1-7 11:48
范晓冲 发表于 2014-1-4 16:56
为什么需要序列化和反序列化?
                当两个进程在进行远程通信时,彼此可以发送各种类型的数据 ...

谢谢,貌似有一点点感觉了。。。




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