美文网首页
Java中对象或者对象数组的序列化和反序列化

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

作者: i小雨 | 来源:发表于2021-01-11 18:06 被阅读0次

    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;
        }
    

    相关文章

      网友评论

          本文标题:Java中对象或者对象数组的序列化和反序列化

          本文链接:https://www.haomeiwen.com/subject/ftndaktx.html