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

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

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

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

序列化:把Java对象转换为字节序列的过程

反序列化:把字节序列恢复为Java对象的过程

注意:参与序列化和反序列化的类必须实现Serializable接口,该接口没有方法,但是默认会生成一个序列化版本号

其中包含序列化对象的方法:writeObject()

包含反序列化对象的方法:readObject()

应用示例:

序列化操作

创建一个实体类并实现Serializable该接口

public class Goods implements Serializable {
    private String goodsId;
    private String goodsName;
    private double price;

}

创建是实体类对象并序列化操作

public static void main(String[] args) throws Exception{
        //创建实体来对象
        Goods goods=new Goods("gd001","电脑",888);
        FileOutputStream fos=new FileOutputStream("./document/imooc.txt");
        ObjectOutputStream outputStream=new ObjectOutputStream(fos);


        //把对象写到文件
        outputStream.writeObject(goods);
        //刷新缓冲流
        outputStream.flush();

        //关闭流
        outputStream.close();
        fos.close();
}

序列化后文件的内容会显示乱码,不影响反序列化读取文件内容,因为对象输出流写到文件中的数据并不是文件中本身的文本数据,二十对象序列化后的数据,所以乱码是正常的

反序列化操作

public static void main(String[] args) throws Exception{
        FileInputStream fis=new FileInputStream("./document/imooc.txt");
        ObjectInputStream objectInputStream=new ObjectInputStream(fis);
        //读取文件
        Object object=objectInputStream.readObject();
        //强制转换为Goods商品类对象
        Goods goods1= (Goods) object;
        System.out.println(goods1);

        fis.close();
        objectInputStream.close();
}

此时在控制台会看到反序列化输出的内容,即为我们序列化的内容

流的关闭顺序:

建议在关闭流时,先打开的后关闭,后打开的先关闭

喜欢文章的话就点个关注或收藏一下吧

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

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

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