栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java对象的序列化和反序列化(分别保存字节数组和文件中)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java对象的序列化和反序列化(分别保存字节数组和文件中)

Java对象的序列化和反序列化:

实体类Entity:

import java.io.Serializable;

public class Entity implements Serializable {

    // 注意不要省略
    private static final long serialVersionUID = 2139181745907483554L;

    private String name;
    private String phone;
    private String wife;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getWife() {
        return wife;
    }

    public void setWife(String wife) {
        this.wife = wife;
    }

    @Override
    public String toString() {
        return "entity{" +
                "name='" + name + ''' +
                ", phone='" + phone + ''' +
                ", wife='" + wife + ''' +
                '}';
    }
}

实现序列化和反序列化的接口SerInterface:

public interface SerInterface {

    // 保存到文件中序列化和反序列化方法
    public void serialization(Object object);
    public Object deserialization();

    // 保存到字节数组中的序列化和反序列化方法
    public byte[] serializationOther(Object object);
    public Object deserializationOther(byte[] data);
}

序列化和反序列化的实现类SerInterfaceImpl:

import java.io.*;

public class SerInterfaceImpl implements SerInterface {
    @Override
    public void serialization(Object object) {
        ObjectOutputStream objectOutputStream = null;
        try {
            objectOutputStream = new ObjectOutputStream(new FileOutputStream(new File("object")));
            objectOutputStream.writeObject(object);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (objectOutputStream != null) {
                try {
                    objectOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    @Override
    public Object deserialization() {
        ObjectInputStream objectInputStream = null;
        try {
            objectInputStream = new ObjectInputStream(new FileInputStream(new File("object")));
            return objectInputStream.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (objectInputStream != null) {
                try {
                    objectInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

    @Override
    public byte[] serializationOther(Object object) {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ObjectOutputStream objectOutputStream = null;
        try {
            objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
            objectOutputStream.writeObject(object);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (objectOutputStream != null) {
                try {
                    objectOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return byteArrayOutputStream.toByteArray();
    }

    @Override
    public Object deserializationOther(byte[] data) {
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data);
        ObjectInputStream objectInputStream = null;
        Object object = null;
        try {
            objectInputStream = new ObjectInputStream(byteArrayInputStream);
            object = objectInputStream.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (objectInputStream != null) {
                try {
                    objectInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return object;
    }
}

测试:

public class Test {

    public static void main(String[] args) {
        Entity entity = new Entity();
        entity.setName("author");
        entity.setPhone("12312341234");
        entity.setWife("wife");
        SerInterface serInterface = new SerInterfaceImpl();
        // 保存到文件中
        serInterface.serialization(entity);
        Entity output = (Entity) serInterface.deserialization();
        System.out.println(output.getName());
        System.out.println(output.getPhone());
        System.out.println(output.getWife());

        System.out.println("--------------------------------");

        // 保存到字节流中
        byte[] bytes = serInterface.serializationOther(entity);
        Entity outOther = (Entity) serInterface.deserializationOther(bytes);
        System.out.println(output.getName());
        System.out.println(output.getPhone());
        System.out.println(output.getWife());
    }
}

结果展示:
文件

控制台输出

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821368.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号