通过字节数组流进行的对象序列化操作

来源:互联网 发布:淘宝考试 编辑:程序博客网 时间:2024/05/29 04:13

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。

发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。

对象的序列化主要有两种用途:

1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。


序列化

public static byte[] serilizer(Object object){        //定义内存变量        ByteArrayOutputStream bos=new ByteArrayOutputStream();        try {            ObjectOutputStream oos=new ObjectOutputStream(bos);            oos.writeObject(object);            oos.flush();            oos.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return bos.toByteArray();    }

ByteArrayOutputStream可以捕获内存缓冲区的数据,转换成字节数组。作为输出目的地。正如注释中所说的在这里他就是起到获得内存对象的作用。
本方法将对象写入内存中,转换为内存中的字节数组,并通过return得到


反序列化

public static  Object deserilizer(byte[] bytes){        //定义内存变量        Object obj=null;        try {            ByteArrayInputStream bis=new ByteArrayInputStream(bytes);            ObjectInputStream ois=new ObjectInputStream(bis);            obj=ois.readObject();            ois.close();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return obj;    }

ByteArrayInputStream可以捕获内存缓冲区的数据,转换成字节数组。作为输入流来源。

0 0
原创粉丝点击