java--io序列化流、反序列化流

Java基础IO流之序列化流的使用 ☆引言☆ 大家好,我是痛而不言笑而不语的浅伤。上一章我们学习了IO流中的递归,本章我们一起来学习IO流中的序列号流。这篇文章来自我的《吃透JavaSE基础》专栏中,想要学习更多JavaSE基础,订阅专栏《吃透JavaSE基础》。对文章中描述错误的希望大家积极指出。 🎉博客首页:痛而不言笑而不语的浅伤 🥳欢迎关注👍点赞收藏🎊留言 ❤:热爱Java学习,期待一起交流! 🙏🏻作者水平很有限,如果发现错误,求告知,多谢! 🥰有问题可以私信交流!!! ... 阅读详情

目录

实体类

代码


pojo实体类 实现Serializable接口开启这个类的可序列化功能

Serializable类 标记接口,被标记的pojo实体类就可以序列化,会给编译后的.class文件计算一个序列号

关于Serializable的博客

https://www.cnblogs.com/yoohot/p/6019767.html

实体类

package cn.bufanli.pojo;

import java.io.Serializable;

/**
 * @author BuShuangLi
 * @date 2018/12/27
 */
public class Person implements Serializable {
      /**
      * 自定义序列号
      */
     private static final long serialVersionUID = 1L;

     private String name;
     private String age;
     /**
      * transient 阻止成员变量静态化
      */
     private transient String money;

     public Person(String name, String age, String money) {
          this.name = name;
          this.age = age;
          this.money = money;
     }
     public Person(){}

     @Override
     public String toString() {
          return "Person{" +
                   "name='" + name + '\'' +
                   ", age='" + age + '\'' +
                   ", money='" + money + '\'' +
                   '}';
     }

     public String getName() {
          return name;
     }

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

     public String getAge() {
          return age;
     }

     public void setAge(String age) {
          this.age = age;
     }

     public String getMoney() {
          return money;
     }

     public void setMoney(String money) {
          this.money = money;
     }
}

代码

package cn.bufanli.iodemo;

import cn.bufanli.pojo.Person;

import java.io.*;

/**
 * @author BuShuangLi
 * @date 2018/12/27
 * 序列化 用于向流中写入对象的操作流程
 * ObjectOutputStream
 * 特点: 用于操作对象可以将对象写入到文件中
 * 反序列化
 * ObjectInputStream
 * 特点: 用于操作对象可以从文件中读取对象
 */
public class ObjectStreamDemo {
     public static void main(String[] args) throws IOException, ClassNotFoundException {
          /**
           * 序列化
           */
          objectOutputStream();
          /**
           * 反序列化
           */
          objectInputStream();

     }

     /**
      * 序列化
      * 构造方法 ObjectOutputStream(OutputStream out)
      * 传递任意的字节输出流即可
      * 写出对象的方法
      *
      */
     private static void objectOutputStream() throws IOException {
          //创建字节输出流
          FileOutputStream fileOutputStream = new FileOutputStream(new File("F:\\person.txt"));
          //创建写出对象的序列化流 传入创建的字节输出流对象
          ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
          Person person = new Person();
          person.setName("张三");
          person.setAge("12");
          person.setMoney("1231");
          objectOutputStream.writeObject(person);
          objectOutputStream.close();
     }

     /**
      * 反序列化,和序列话套路一样
      */
     private static void objectInputStream() throws IOException, ClassNotFoundException {
          FileInputStream fileInputStream = new FileInputStream(new File("F:\\person.txt"));
          ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
          //需要抛一个异常
          Object o = objectInputStream.readObject();
          System.out.println(o);


     }
}

控制台

11 Java文件处理之写入、读取:IO流(中):高级流(缓冲流、转换流、序列化流和反序列化流、打印流) 前面学FileReader和FileWriter字符流:对于中文只能处理当前平台的编码方式进行编码和解码,不能指定编码格式进行编码解码。这个指定编码的功能,在本节的高级流(转换流)上就会得到处理。另外,高级流都是在上节的四中基本流上面进一步封装而来的,可以说前面基本流是他们的爸爸。缓冲流(提供缓冲区,加快读取写入速度,减少和硬盘交互次数)转换流(可以指定编码格式)基本流—>缓冲流转换流(都是字符流)序列化流和反序列化流(都是字节流)打印流(不能读,只能写,只有输出流) 阅读详情

相关推荐

SARscape的DInSAR全流程-以西安市隋大兴唐长安城遗址为例

通过DInSAR对西安市隋大兴唐长安城遗址开展的年度周期性监测,发现成因是地质内部构造断裂带活动所导致的地面产生物理空间上的形变,而地面的沉降与抬升是直接影响城市发展与文化遗产保护最为常见的缓变型不可逆地质灾害。西安市地处汾渭断陷盆地中部,受临潼-长安断裂带影响,导致区域内构造活动较为强烈。由于早年西安市地表水资源匮乏,从上世纪50年代末开始大量开采地下水资源以满足城市人口不断扩张的需求,从而导致地下承压含水层水位急速下降,形成多个局部沉降中心(八里村、西工大、电子城等)。

2301_77687129的博客 5810

javaIO流之序列流

Java 的序列流(ObjectInputStream 和 ObjectOutputStream)是一种可以将 Java 对象序列化和反序列化的流。序列化是指将一个对象转换为一个字节序列(包含对象的数据、对象的类型和对象中存储的属性等信息),以便在网络上传输或保存到文件中,或者在程序之间传递。在 Java 中,序列化通过实现 java.io.Serializable 接口来实现,只有实现了 Serializable 接口的对象才能被序列化。反序列化是指将一个字节序列转换为一个对象,以便在程序中使用。

恒二哥的博客 1049

三极管和MOS管工作原理详解

PN结的形成 PN结是三极管以及场效应管中最基本的组成部分,要想彻底搞明白三极管以及场效应管的工作原理,必须先搞清楚PN结形成的原理和工作特性。 本征半导体以及空穴对 本征半导体(intrinsic semiconductor))完全不含杂质且无晶格缺陷的纯净半导体称为本征半导体。主要常见代表有硅、锗这两种元素的单晶体结构。硅、锗都是4价原子,在半导体内部形成相对稳定的共价键结构,如图 1所

技术交流是便宜的的博客 10万+

【Java】序列化流和反序列化流

这是由于Student类在底层会根据类中的各种内容来计算出一个long类型的版本号,在创建对象的时候也会记录版本号,在写入文件的时候也会写入版本号,如果修改了Student类中的内容,版本号会重写进行计算,会导致文件中的版本号与Student类中的版本号不一致,从而报错。在Student的类中要实现Serializable接口,这个接口是标记型接口,内部没有抽象方法,所以在实现时不需要重写任何方法,在实现这个类之后就可以直接把对象写入到文件中。写入对象并读取,读取到的内容是。age的内容没有被写入。

2202_75462083的博客 216

Comsol 管道导波裂纹检测:从建模到求解的完整流程解析

本文详细解析了使用Comsol Multiphysics进行管道导波裂纹检测的完整仿真流程。从几何建模、材料定义、物理场设置到网格划分与求解后处理,系统阐述了如何构建高保真虚拟模型以模拟导波与裂纹的相互作用。重点分享了激励信号设置、频散效应处理及参数化扫描等实战技巧,旨在帮助工程师与研究人员高效优化无损检测方案,降低实验成本。

weixin_29207439的博客 73

归因分析计算因子贡献度常见的方法

在归因分析中,我们一般都需要计算出每个因子的贡献度是多少,比如产品DAU上升,对年龄段维度进行拆解,看是不同年龄段的用户对DAU上升的贡献度是多少,一般根据指标的类型,计算贡献度的方法也不一样,下面就列出一些常见的归因分析贡献度的计算方法。

Hubans的博客 4万+

java 序列化 详解

java 序列化 详解

T_Y_F_的博客 1153

陀螺仪选型避坑指南:为什么IMU660RA是智能车竞赛的性价比之选?

本文针对智能车竞赛场景,提供陀螺仪选型避坑指南,并深度解析为何IMU660RA成为性价比之选。文章指出,竞赛选型应避免盲目追求高性能“黑盒”模块,而应注重原始数据获取与算法开发。IMU660RA以其良好的常温稳定性、适中的噪声水平、极致的性价比和丰富的生态支持,成为帮助参赛者深入理解姿态解算原理、进行“白盒开发”的理想教学与实践平台。

tech5的博客 879

Java序列流和打印流、对象序列化

Java的序列化机制可以解决该类问题,挡序列化一个对象时,Java的序列化机制会负责保存对象的所有关联的对象(就是对象图),反序列化时,也会恢复所有的相关内容。它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。当创建对象时,程序运行时它就会存在,但是程序停止时,对象也就消失了.但是如果希望对象在程序不运行的情况下仍能存在并保存其信息,将会非常有用,对象将被重建并且拥有与程序上次运行时拥有的信息相同。

棉花糖老丫 858

QGIS三维地形可视化实战:从DEM数据到炫酷3D场景(附Qgis2threejs插件配置)

本文详细介绍了如何利用QGIS和Qgis2threejs插件,将DEM数据转化为交互式三维地形场景的完整工作流。核心内容包括DEM数据准备、坐标系选择(重点对比WGS 84与UTM的差异及影响)、插件核心参数配置、卫星影像与等高线叠加等进阶技巧,并提供了成果导出与常见问题解决方案,帮助用户高效创建可用于网页展示的炫酷3D可视化成果。

mqtt6iot的博客 875

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3554

【Java学习|黑马笔记|Day21】IO流|缓冲流,转换流,序列化流,反序列化流,打印流,解压缩流,常用工具包相关用法及练习

本文分享了Java IO流中缓冲流,序列化流,打印流,解压缩流,常用工具包相关应用和练习

2401_87144364的博客 1053

GVINS数据采集(u-blox fp9 + D435i)

1、配置千寻的RTK账号 采集数据当天购买千寻的RTK账号,然后在Window下,输入账号和密码 (具体的步骤如之前面连接所示),查看u-center软件上的信息,确保接收机可以收到RTK信息; 2、查看Linux系统下u-blox是否可以正常接受GPS信号和RTK数据流 1、GPS信号信息 // 打开端口 1 cd ublox_f9p/src // 或者在终端1下也可以 source devel/setup.bash r.....................

努力努力努力 2609

Java基础知识24——IO流day04-Properties集合&序列化流和反序列化流&打印流&commons-IO

打印流 * 打印流 * 字节打印流 PrintStream * 字符打印流 PrintWriter * * 打印流的特点: * A:只有写数据,没有读数据。只能操作目的地,不能操作数据源 * B:可以操作任意类型的数据 * print() * println() * C:如果启动了自动刷新,能够自动刷新 * PrintWrite bw = new Pri...

心情舒畅 552

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java io序列流_Java IO流-序列化流和反序列化流

2017-11-05 20:42:06序列化流:把对象按照流的方式存入文本文件或者在网络中传输。 对象 -- 流数据(ObjectOutputStream)反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。 流数据 -- 对象(ObjectInputStream)ObjectOutputStreamObjectOutputStream:ObjectOutputStream 将 ...

weixin_39834084的博客 167

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java_IO流(二十五)—— Properties类、序列化流与反序列化流、打印流、 commons-IO

第一章Properties类 1.1Properties类介绍 Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 特点: 1、Hashtable的子类,map集合中的方法都可以用。 2、该集合没有泛型。键值都是字符串。 3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。 4、有和流技术相结合的方法。 loa...

qq_40243295的博客 309

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java io流之序列化流和反序列化流

java io流之序列化流和反序列化流 1.简略介绍一下   序列化流      ObjectOutputStream     对象写入文本文件或在网络中传输   反序列化流   ObjectInputStream       文本中的流对象或者网络中的流对象还原为对象 在这里我们让被序列化和反序列化的对象所属的类实现了Serializable接口,在这里需要注意的是Serializ

飞升飞的博客 540

java io文件流序列化_Java——Properties集合,Object序列化流与反序列化流,打印流,commons-IO文件工具类...

一、properties集合集合对象Properties类,继承Hashtable,实现Map接口,可以和IO对象结合使用,实现数据的持久存储。特点:Hashtable的子类,map集合中的方法都可以用。该集合没有泛型。键值都是字符串。它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。有和流技术相结合的方法。1、基本使...

weixin_32409707的博客 179

(java)IO流对象(六)集合Properties类、序列化流、反序列化流、打印流

【Properties特点】 /* * 集合对象Properties类特点: * 1. 继承Hashtable,实现Map接口 * 2. 该集合无泛型,键值都是字符串 * 3. 键值可以存储到集合中,也可以存储到持久化的设备如硬盘、U盘、光盘上。键值的来源也可是持久化的设备 * 4. 可以和IO对象结合使用,有和流技术相结合的方法 */ 【Pro...

weixin_39781462的博客 292

Java IO流之序列化流与反序列化流(深克隆)

BufferedWriter   写出数据,高效的字符输出流   构造方法   public BufferedWriter(Writer w)   字符缓冲流的特殊功能   public void newLine();:   根据系统来决定换行符 具有系统兼容性的换行符 BufferedReader   读取数据 高效的字符输入流   构造方法   public BufferedReader(R...

安夜的cookie 410

java序列化流_java之IO流(序列化流与反序列化流)

一.对象序列化流ObjectOutputStream用于向流中写入对象的操作流 ObjectOutputStream 称为 序列化流ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。注意:只能将支持 java.io.Serializ...

weixin_33784667的博客 321

java io流(六) 序列化流、反序列化流

序列化 1 概述 Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。 反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。看图理解序列化: 2 ObjectOutp...

weixin_44861708的博客 215

java之IO流(序列化流与反序列化流)

一.对象序列化流ObjectOutputStream 用于向流中写入对象的操作流 ObjectOutputStream 称为 序列化流 ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。 注意:只能将支持 java.io...

weixin_30820077的博客 89

java基础语法day25(Properties集合、序列化流与反序列化流、打印流、commons-IO)

今日内容介绍1. Properties集合2. 序列化流与反序列化流3. 打印流4. commons-IO第1章 Properties类1.1 Properties类介绍Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。特点:    1、Hashtable的子类,map集合中的方法都可以用。    2、该集合没...

nerveboy学习笔记 414

Java中的IO流③——转换流、序列化流、反序列化流、打印流

Java中的IO流③——转换流、序列化流、反序列化流、打印流

qingwan_91的博客 512
上一篇: java--properties集合的读取、存储
下一篇: java--io打印流
别浪呀
博客等级 码龄8年 1万+粉丝 260原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值