package com.jeecms.common.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectOutputStream; import org.apache.commons.io.serialization.ValidatingObjectInputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 流工具类 * * @author: tom * @date: 2019年1月9日 上午10:58:14 * @Copyright: 江西金磊科技发展有限公司 All rights reserved.Notice * 仅限于授权后使用,禁止非授权传阅以及私自用于商业目的。 */ public class StreamUtil { static Logger logger = LoggerFactory.getLogger(StreamUtil.class); /** * 对象转byte * * @param obj * 对象 * @return */ public static byte[] objectToByte(Object obj) { byte[] bytes = null; try { // object to bytearray ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(obj); bytes = bo.toByteArray(); bo.close(); oo.close(); } catch (Exception e) { logger.error(e.getMessage()); } return bytes; } /** * byte转对象 * * @param bytes * 需要序列化的字节数组 * @return 对象 */ public static Object byteToObject(byte[] bytes) { Object obj = new Object(); try { ByteArrayInputStream bi = new ByteArrayInputStream(bytes); // ObjectInputStream oi = new ObjectInputStream(bi); // Use ValidatingObjectInputStream instead of InputStream ValidatingObjectInputStream oi = new ValidatingObjectInputStream(bi); // 只允许反序列化SerialObject class // ois.accept(SerialObject.class); obj = oi.readObject(); bi.close(); oi.close(); } catch (Exception e) { logger.error(e.getMessage()); } return obj; } }