Java IO流 序列化流 ObjectOutputStream ObjectInputStream

news/2024/5/17 11:26:22/文章来源:https://blog.csdn.net/qq_43623492/article/details/128943517

Java IO流 打印流 PrintStream PrintWriter
Java IO流 序列化流 ObjectOutputStream ObjectInputStream
Java IO流 缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
Java IO流 字符流 目录拷贝
Java IO流 字符流 FileWriter
Java IO流 字符流 FileReader
Java IO流 字节流 FileInputStream
Java IO流 字节流 FileOutputStream

创建对象

创建对象传入一个基本流,因为序列化是在基本流上做的封装

String filePath = "src/main/java/a.txt";
// 序列化输出流
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
// 序列化输入流
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath));

读写操作

序列化流读写操作与基本流相同,其中较为实用的就是writeObject与readObject,提供一个案例👇

public class ObjectStream {public static void main(String[] args) throws IOException, ClassNotFoundException {String filePath = "D:\\学习资料\\day01-SpringCloud01\\资料\\cloud-demo\\io\\src/main/java/a.txt";testObjectOutputStream(filePath);testObjectInputStream(filePath);}// 序列化对象public static void testObjectOutputStream(String filePath) throws IOException {Student student = new Student("zdy", 18);ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));oos.writeObject(student);oos.close();}// 反序列化对象public static void testObjectInputStream(String filePath) throws IOException, ClassNotFoundException {ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath));Student object = (Student)ois.readObject();System.out.println(object); // Student(name=zdy, age=18)ois.close();}
}

细节处理

先来看看被序列化的类Student👇

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {private static final long serialVersionUID = 5683452591122899119L;private String name;private transient int age;private String address;
}
  1. 实体类要实现Serializable接口才能序列化
  2. 先序列化Student到文件中,之后我们修改Student类,因为修改了Student类,所以再反序列化就会不匹配而报错,所以添加private static final long serialVersionUID = 5683452591122899119L;作为序列号,再反序列化时就不会报错
  3. 当我们不想序列化对象中的某个属性时,就可以添加transient关键字,当前属性就不会序列化到本地文件中了,如Student类中private transient int age;

自动生成序列化号

如下图所示设置IDEA

在这里插入图片描述

设置完毕之后,鼠标悬停在类名上,点击Add ‘serialVersionUID’ field就可以生成序列化号了,避免了自己瞎写而重复的可能
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_255444.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sentinel服务熔断和流控

简介Sentinel随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。源…

Java基础学习笔记(二十)—— 多线程(2)

多线程1 线程池1.1 线程状态1.2 线程池基本原理1.3 创建线程池1.4 任务拒绝策略2 共享变量的问题与解决2.1 存在的问题2.2 Volatile解决2.3 synchronized解决3 原子性3.1 原子性的实现(synchronized)3.2 AtomicInteger3.3 悲观锁和乐观锁4 并发工具类4.1…

算法 | 动态规划 | 系列题目讲解(思路记录part.1)

文章目录字符串分割三角矩阵路径总数最小路径和字符串分割 问题描述 给定一个字符串和一个词典dict,确定s是否可以根据词典中的词分成 一个或多个单词。 比如,给定 s “leetcode” dict [“leet”, “code”] 返回true,因为"leetcode…

吾剑未尝不利,国内Azure平替,科大讯飞人工智能免费AI语音合成(TTS)服务Python3.10接入

微软Azure平台的语音合成(TTS)技术确实神乎其技,这一点在之前的一篇:含辞未吐,声若幽兰,史上最强免费人工智能AI语音合成TTS服务微软Azure(Python3.10接入),已经做过详细介绍,然则Azure平台需要信用卡验证,有一定门槛&…

基于Apache Maven构建多模块项目

title: 基于Apache Maven构建多模块项目 date: 2022-04-10 00:00:00 tags: Apache Maven多模块 categories:Maven 介绍 多模块项目由管理一组子模块的聚合器 POM 来构建。在大多数情况下聚合器位于项目的根目录中,并且必须是 pom 类型的项目。子模块是常规的 Mave…

CNN网络:ResNet(四)

ResNet论文[https://arxiv.org/pdf/1512.03385.pdf]。RestNet网络结构ResNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,…

手机逻辑系统(2)---逻 辑 音 频 电 路

第二节 逻 辑 音 频 电 路 逻辑音频电路在手机电路中占有重要的地位,它是手机系统的心脏。 逻辑音频电路包含无线通信呼叫处理、音频处理、数字语音处理、射频逻辑接口电路、各种射频功能控制、电源管理和用户接口模组等。 任何一部手机的逻辑音频电路部分都包含以上的一些功能…

1.2.4存储结构-磁盘管理:磁盘优化分布存储、磁盘优化分布存储例题

1.2.4存储结构-磁盘管理:磁盘优化分布存储、磁盘优化分布存储例题磁盘优化分布存储磁盘优化分布存储 假设某磁盘的每个磁道划分成11个物理块,每块存放1个逻辑记录。逻辑记录R0,R1,…,R9,R10存放在同一个磁…

将U盘制作为启动盘

将U盘制作为启动盘 制作之前需要先保证U盘中没有重要的文件,因为制作时会将已有文件删除 1 安装制作软件【wePE】 ①官网选择对应PE版本下载安装 官网下载地址:http://www.wepe.com.cn IT天空的U盘装机助理:https://www.itiankong.net/thread-357573-1…

Ubuntu18 安装python3.7及多版本切换

1.安装3.7添加源sudo add-apt-repository ppa:deadsnakes/ppa检查更新sudo apt-get update 安装python3.7sudo apt-get install python3.72.使用 update-alternatives 来为整个系统更改Python 版本查看python替代版本信息~$ update-alternatives --display python但是结果为upd…

数字化发展趋势:打破企业边界,实现产业互联

据中欧商业在线发布的《2022未来管理人才白皮书》显示,在参加调研的1000家企业中,有77%的企业已经在公司业务中运用了数字化技术;更有7%的企业表示将在更深层面推进数字化转型工作。 当企业在业务层面完成数字化转型,下一步会走向…

知识图谱简介

知识图谱简介 知识图谱,是结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系,通过知识图谱能够将Web上的信息**、数据以及链接关系聚集为知识,使信息资源更易于计算、理解以及评价,并能实现知识的快速响应…

Keil中代码的颜色设置 ( 很 全 )[通俗易懂](转载)

https://cloud.tencent.com/developer/article/2081534Keil中代码的颜色设置 ( 很 全 )[通俗易懂]发布于2022-08-25 12:26:13阅读 1.8K0大家好,又见面了,我是你们的朋友全栈君。因为长时间要编程,对于keil上的黑字白底,如果看久了…

Python实现的通讯录

"为何表情,要让这世界安排?"诶,我们也对python的一些基础语法有了一定能的了解了。并且在这基础上,学习了python中的文件操作,那么有了这些东西以后啊,我们能做什么呢?或许对很多数据…

揭秘PPTC(自恢复保险丝)的四大使用原则

PPTC自恢复保险丝有贴片式以及插件式两种,封装形式多样,型号齐全,那么,在使用过程中,应该要注意什么?你知道吗?接下来,优恩小编将为你揭秘PPTC(自恢复保险丝)的四大使用原则。一、规…

Spring boot项目开发实战一(环境搭建)

技术栈选型 最近在实习好久没时间做过项目了,本次将借用公司的技术完成一个基于spring boot的实战项目,同时也巩固spring的相关知识。项目大体是一个后台管理系统,没有前台,用于数据分析和可视化。如下是初步的可视化界面&#x…

MySQL8.0 集群搭建

文章目录环境准备安装 MySQL 8.0配置主服务配置从服务器主从复制:即主服务器上的所有操作(创建库,修改表等)会被同步到从服务器上,但是在从服务器上的操作不会进入到主服务器中 环境准备 两台服务器,一主…

【Classical Network】Xception

文章目录深度可分离卷积Inception发展GoogleNetInception Networkinception V1inception V2inception V3inception V4Xception参考文章 经典卷积架构的PyTorch实现:Xception 参考文章 卷积神经网络结构简述(二)Inception系列网络 github 项目…

Springboot扩展点之InstantiationAwareBeanPostProcessor

前言前面介绍了Springboot的扩展点之BeanPostProcessor,再来介绍另一个扩展点InstantiationAwareBeanPostProcessor就容易多了。因为InstantiationAwareBeanPostProcessor也属于Bean级的后置处理器,还继于BeanPostProcessor,因此Instantiatio…

【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战

系列目录 【Spring Cloud Alibaba】(一)微服务介绍 及 Nacos注册中心实战 本文目录系列目录前言什么是RPC?Feign和OpenFeign都是什么?HTTP调用 vs Feign(RPC)调用单独使用Feign实战Feign核心源码解读Feign整体设计架构Spring Clo…