SerializeUtil 序列化 java
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author baoy * */ public class SerializeUtil { private static final Logger logger = LoggerFactory.getLogger(SerializeUtil.class); /** * 序列化 * @param object * @return */ public static byte[] serialize(Object object) { ObjectOutputStream oos = null; ByteArrayOutputStream baos = null; try { baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(object); byte[] bytes = baos.toByteArray(); return bytes; } catch (Exception e) { } return null; } /** * 反序列化 * @param bytes * @return */ public static Object unserialize(byte[] bytes) { ByteArrayInputStream bais = null; try { bais = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bais); return ois.readObject(); } catch (Exception e) { } return null; } /** * 序列化存储list * @param list * @return * @throws IOException */ public static byte[] serializeList(List<Object> list) throws IOException { if (list == null) { throw new NullPointerException("Can't serialize null"); } byte[] rv = null; ByteArrayOutputStream bos = null; ObjectOutputStream os = null; try { bos = new ByteArrayOutputStream(); os = new ObjectOutputStream(bos); for (Object o : list) { os.writeObject(o); } os.writeObject(null); rv = bos.toByteArray(); } catch (IOException e) { throw new IllegalArgumentException("Non-serializable object", e); } finally { if (os != null) { os.close(); } if (bos != null) { bos.close(); } } return rv; } /** * 反序列化 * @param in * @return * @throws IOException */ public static List<Object> deserialize(byte[] in) throws IOException { List<Object> list = new ArrayList<Object>(); ByteArrayInputStream bis = null; ObjectInputStream is = null; try { if (in != null) { bis = new ByteArrayInputStream(in); is = new ObjectInputStream(bis); while (true) { Object object = is.readObject(); if (object == null) { break; } else { list.add(object); } } } } catch (IOException e) { logger.error("Caught IOException decoding %d bytes of data", in.length, e); } catch (ClassNotFoundException e) { logger.error("Caught CNFE decoding %d bytes of data", in.length, e); } finally { if (is != null) { is.close(); } if (bis != null) { bis.close(); } } return list; } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。
个人主页:http://knight-black-bob.iteye.com/
谢谢您的赞助,我会做的更好!
相关推荐
`SerializeUtil`类展示了如何序列化和反序列化Java对象。序列化是将对象转换为字节数组存储,反序列化则是从字节数组恢复对象。这种方式能处理更复杂的数据结构,但需要注意的是,序列化后的对象会占用更多空间,...
最后,`SerializeUtil.java`是序列化工具类,主要用于将Java对象转换成字节流存储到Redis,或者将字节流反序列化回Java对象。因为Redis本身只支持基础类型,如字符串、数字等,如果需要存储复杂对象(如自定义的Java...
Java提供了多种序列化机制,如Java Serialization、JSON Serialization等。在本篇文章中,我们将使用Java Serialization进行序列化。 存储对象 为了存储对象,我们需要将对象序列化成字节数组,然后将其存储在...
首先,让我们回顾一下Protostuff的序列化和反序列化过程。在`SerializeUtil`类中,我们看到一个简单的Util方法,用于将Java对象转换为字节数组和从字节数组恢复对象。`serialize`方法创建一个`SerializeData`实例,...
2. **序列化工具**:为了能够将Java对象存储到Redis中,需要实现对象的序列化和反序列化操作。这里使用了自定义的`SerializeUtil`工具类来完成这一功能。 ```java public class SerializeUtil { public static ...
25. **序列化/反序列化工具类**:如`SerializeUtil`,用于对象的序列化和反序列化,常用于保存或恢复实例状态。 26. **通知工具类**:如`NotificationUtil`,创建和管理Android的通知。 以上这些工具类是Android...
Redis作为一个高性能的键值存储系统,其强大的数据结构支持使其在处理对象和集合时具有很高的灵活性...通过合理的序列化和反序列化策略,可以有效地将Java对象转换为Redis可识别的格式,从而实现高效的数据存储和检索。