package com.qxueyou.scc.base.util;
|
|
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayOutputStream;
|
import java.io.IOException;
|
import java.io.ObjectInputStream;
|
import java.io.ObjectOutputStream;
|
import java.io.Serializable;
|
|
import org.apache.commons.io.IOUtils;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
/**
|
* 序列化工具类
|
* @author 德虎
|
*
|
*/
|
public class SerializeUtils {
|
|
private static Logger log = LogManager.getLogger("SerializeUtils");
|
|
/**
|
* 将对象转换为字节数组
|
* @param obj 可序列化的对象
|
* @return 字节数组
|
*/
|
public static byte[] toByteArrayFromObject(Object obj){
|
|
if(!(obj instanceof Serializable)){
|
return new byte[0];
|
}
|
|
ByteArrayOutputStream bo = new ByteArrayOutputStream();
|
ObjectOutputStream oo = null;
|
|
try {
|
|
oo = new ObjectOutputStream(bo);
|
|
oo.writeObject(obj);
|
|
return bo.toByteArray();
|
|
} catch (IOException e) {
|
log.error(e,e);
|
} finally{
|
IOUtils.closeQuietly(oo);
|
}
|
|
return new byte[0];
|
|
}
|
|
/**
|
* 将字节数组为对象转换
|
* @param data 字节数组
|
* @param cls 要转化的对象类型
|
* @return 要转化的对象
|
*/
|
public static <T> T toObjectFromByte(byte[] data,Class<T> cls){
|
|
ByteArrayInputStream bi = new ByteArrayInputStream(data);
|
ObjectInputStream oi = null;
|
|
try {
|
|
oi = new ObjectInputStream(bi);
|
|
Object obj = oi.readObject();
|
|
return cls.cast(obj);
|
|
} catch (IOException e) {
|
log.error(e,e);
|
} catch (ClassNotFoundException e) {
|
log.error(e,e);
|
} finally{
|
IOUtils.closeQuietly(oi);
|
}
|
|
return null;
|
}
|
}
|