您的位置:首页 > 编程语言 > Java开发

序列化与反序列化,Java实现

2016-01-20 09:41 483 查看
public class SerializingUtil {  

      

    private static Log logger = LogFactory.getLog(SerializingUtil.class);  

      

    /** 

     * 功能简述: 对实体Bean进行序列化操作. 

     * @param source 待转换的实体 

     * @return 转换之后的字节数组 

     * @throws Exception 

     */  

    public static byte[] serialize(Object source) {  

        ByteArrayOutputStream byteOut = null;  

        ObjectOutputStream ObjOut = null;  

        try {  

            byteOut = new ByteArrayOutputStream();  

            ObjOut = new ObjectOutputStream(byteOut);  

            ObjOut.writeObject(source);  

            ObjOut.flush();  

        }  

        catch (IOException e) {  

            logger.error(source.getClass().getName()  

                + " serialized error !", e);  

        }  

        finally {  

            try {  

                if (null != ObjOut) {  

                    ObjOut.close();  

                }  

            }  

            catch (IOException e) {  

                ObjOut = null;  

            }  

        }  

        return byteOut.toByteArray();  

    }  

      

    /** 

     * 功能简述: 将字节数组反序列化为实体Bean. 

     * @param source 需要进行反序列化的字节数组 

     * @return 反序列化后的实体Bean 

     * @throws Exception 

     */  

    public static Object deserialize(byte[] source) {  

        ObjectInputStream ObjIn = null;  

        Object retVal = null;  

        try {  

            ByteArrayInputStream byteIn = new ByteArrayInputStream(source);  

            ObjIn = new ObjectInputStream(byteIn);  

            retVal = ObjIn.readObject();  

        }  

        catch (Exception e) {  

            logger.error("deserialized error  !", e);  

        }  

        finally {  

            try {  

                if(null != ObjIn) {  

                    ObjIn.close();  

                }  

            }  

            catch (IOException e) {  

                ObjIn = null;  

            }  

        }  

        return retVal;  

    }  

}  

注意:被序列化的对象需要继承Serializable接口,不然反序列化会失败。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: