Java中对象或者对象数组的序列化和反序列化

2021-01-11  本文已影响0人  i小雨

1、序列化(反序列化)对象:

    /**
     * 序列化对象
     * @Date 2021年1月11日下午4:11:30
     * @Author yuanyong
     * @Description
     */
    public byte[] serializeObject(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 {
                baos.close();
                oos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    /**
     * 反序列化对象
     * @Date 2021年1月11日下午4:12:05
     * @Author yuanyong
     * @Description
     */
    public Object unserializeObject(byte[] bytes) {
        ByteArrayInputStream bais = null;
        ObjectInputStream ois = null;
        try {
            // 反序列化
            bais = new ByteArrayInputStream(bytes);
            ois = new ObjectInputStream(bais);
            return ois.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                bais.close();
                ois.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

2、序列化(反序列化)对象数组:

/**
     * 集合序列化
     * @Date 2021年1月11日下午5:00:09
     * @Author yuanyong
     * @Description
     */
    public byte[] serializeListObject(List<?> object) {
        ObjectOutputStream oos = null;
        ByteArrayOutputStream baos = null;
        try {
            // 序列化
            baos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(baos);
            //oos.writeObject(object);
            for(Object obj : object){
                oos.writeObject(obj);
            }
            byte[] bytes = baos.toByteArray();
            return bytes;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                baos.close();
                oos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    /**
     * 集合反序列化
     * @Date 2021年1月11日下午5:00:21
     * @Author yuanyong
     * @Description
     */
    public List<Object> unserializeListObject(byte[] in) {
        List<Object> list = new ArrayList<>();
        ByteArrayInputStream bis = null;
        ObjectInputStream is = null;
        try {
            if(in != null) {
                bis=new ByteArrayInputStream(in);
                is=new ObjectInputStream(bis);
                while (bis.available() > 0) {
                    Object obj= is.readObject();

                    if(obj == null){
                        break;
                    }else{
                        list.add(obj);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }  finally {
            try {
                is.close();
                bis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return list;
    }
上一篇 下一篇

猜你喜欢

热点阅读