序列化与反序列化,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接口,不然反序列化会失败。
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接口,不然反序列化会失败。
相关文章推荐
- Java不同压缩算法的性能比较
- JAVA获取CLASSPATH路径
- Java的枚举类型使用方法详解
- java.lang.StackOverflowError
- Java中的继承,多态,抽象类
- java.lang.OutOfMemoryError处理错误
- SpringMvc (四) 集成 spring/springMvc/hibernateValidator
- Java Number类
- Java 分支结构 - if...else/switch
- Struts.......No operations allowed after connection closed.
- 如何把Android Studio项目转换成Eclipse的项目
- Java内部类详解
- Java compiler level does not match解决方法
- Java基础知识点1:基本类型包装类
- Log4j定时打印日志及添加模块名配置的Java代码实例
- Java 教程
- idea使用gradle搭建SpringBoot
- 浅析Java中的访问权限控制
- 第一章:Spring Data JPA入门
- Java并发编程:volatile关键字解析