对象的序列化和反序列化

时间:2022-04-27
本文章向大家介绍对象的序列化和反序列化,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package com.serialize.utils;
import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
/**
  * 序列化工具类
  */
 public class SerializeUtil {
    /**
      * 序列化对象
      * @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) {
             e.printStackTrace();
         }finally{
             try {
                 if(oos!=null)oos.close();
                 if(baos!=null)oos.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
        return null;
    }
    /**
      * 反序列话对象
      * @param bytes
      * @return
      */
     public static Object unserialize(byte[] bytes) {
        ByteArrayInputStream bais = null;
         ObjectInputStream ois = null;
         try {
             // 反序列化
             bais = new ByteArrayInputStream(bytes);
             ois = new ObjectInputStream(bais);
             Object o = ois.readObject();
             return o;
         } catch (Exception e) {
             e.printStackTrace();
         }finally{
             try {
                 if(bais!=null)bais.close();
                 if(ois!=null)ois.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
         return null;
     }
}