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 toObjectFromByte(byte[] data,Class 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; } }