`
knight_black_bob
  • 浏览: 868588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SerializeUtil 序列化 java

    博客分类:
  • java
阅读更多

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/



 
 
 谢谢您的赞助,我会做的更好!

 

0
0
分享到:
评论

相关推荐

    Java 实现Redis存储复杂json格式数据并返回给前端

    `SerializeUtil`类展示了如何序列化和反序列化Java对象。序列化是将对象转换为字节数组存储,反序列化则是从字节数组恢复对象。这种方式能处理更复杂的数据结构,但需要注意的是,序列化后的对象会占用更多空间,...

    springboot--jredis集成使用.zip

    最后,`SerializeUtil.java`是序列化工具类,主要用于将Java对象转换成字节流存储到Redis,或者将字节流反序列化回Java对象。因为Redis本身只支持基础类型,如字符串、数字等,如果需要存储复杂对象(如自定义的Java...

    详解Java在redis中进行对象的缓存

    Java提供了多种序列化机制,如Java Serialization、JSON Serialization等。在本篇文章中,我们将使用Java Serialization进行序列化。 存储对象 为了存储对象,我们需要将对象序列化成字节数组,然后将其存储在...

    基于Protostuff实现的Netty编解码器.docx

    首先,让我们回顾一下Protostuff的序列化和反序列化过程。在`SerializeUtil`类中,我们看到一个简单的Util方法,用于将Java对象转换为字节数组和从字节数组恢复对象。`serialize`方法创建一个`SerializeData`实例,...

    互联网系统架构设计与实践复习资料.docx

    2. **序列化工具**:为了能够将Java对象存储到Redis中,需要实现对象的序列化和反序列化操作。这里使用了自定义的`SerializeUtil`工具类来完成这一功能。 ```java public class SerializeUtil { public static ...

    android工具类 26个实用工具类

    25. **序列化/反序列化工具类**:如`SerializeUtil`,用于对象的序列化和反序列化,常用于保存或恢复实例状态。 26. **通知工具类**:如`NotificationUtil`,创建和管理Android的通知。 以上这些工具类是Android...

    Redis如何存储对象与集合示例详解

    Redis作为一个高性能的键值存储系统,其强大的数据结构支持使其在处理对象和集合时具有很高的灵活性...通过合理的序列化和反序列化策略,可以有效地将Java对象转换为Redis可识别的格式,从而实现高效的数据存储和检索。

Global site tag (gtag.js) - Google Analytics