java_IO流之ObjectInputStream与ObjectOutputStream的使用

国家大地2000坐标系投影坐标转高德地图经纬度坐标-【高斯投影坐标】 国家大地2000坐标系投影坐标转换成高德经纬度坐标显示画图。 阅读详情

ObjectOutputStream是用于操作对象的IO流,如果需要将某个对象以文件的形式保存起来,将对象持久存储。而ObjectInputStream与之相反。

使用ObjectInputStream与ObjectOutputStream要注意以下几个要点:

1、存储的对象类必须是可序列化,即要实现Serializable接口。

class Person implements Serializable ...

2、对象序列化是只针对堆中的数据,所以静态的代码是不会被序列化的。

private static String lover;    lover是不会被序列化的。

3、如果非静态的成员变量不想被序列化,可以添加修饰transient

private transient String name;   name也不会被序列化。

4、对象是通过什么判断自己就是哪个类的实例?

对象序列化,会根据自己成员量的的相关特性算出一个序列化id,通过判断id是否相同。这个id我们也可以自己指定。

如private static final long serialVersionUID = 1L;


下面介绍ObjectInputStream与ObjectOutputStream的相关用法:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class ObjectInputStreamTest {

	/**将对象以文件的形式保存起来,需要用到关于类操作的IO流,被操作的类必须使可序列化的
	 * 类可序列化,要实现Serializable,像这种是接口但没方法的,为标记类
	 * @param args
	 */
	public static void main(String[] args) {
		writeObj();
		readObj();
	}
	//对象从文本中读入
	private static void readObj() {
		//创建对象输入流
		ObjectInputStream ois = null;
		try {
			ois = new ObjectInputStream(new FileInputStream("D:\\obj.txt"));
			//读取对象
			Person p = (Person) ois.readObject();
			System.out.println(p);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ois != null)
					ois.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	//将对象写入至文本
	private static void writeObj() {
		//创建对象输出对象
		ObjectOutputStream oos = null;
		try {
			oos = new ObjectOutputStream(new FileOutputStream("D:\\obj.txt"));
			Person p = new Person("wangzhihong", 23);
			//写出对象
			oos.writeObject(p);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (oos != null)
					oos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}



class Person implements Serializable {
	private static final long serialVersionUID = 1L;
	/**
	 *给类定义一个序列化标识。方便序列化 
	 *静态的代码将不会被序列化,序列化只针对堆里的数据。
	 *当不把某个非静态的成员变量序列化,只需要加上修饰  transient
	 */
	private String name;
	//private transient String name;
	private int age;
	
	public Person() {
	}

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

	public String toString() {
		return name + ":" + age;
	}
}

TCP三次握手,四次挥手的全过程,为什么需要三次握手,四次挥手 文章目录TCP介绍三次握手四次挥手滑动窗口拥塞避免算法 TCP介绍 三次握手 四次挥手 阅读详情

相关推荐

半导体制造中的通孔缺陷与冗余通孔技术解析

通孔(Via)是半导体制造中连接不同金属层的关键结构,其可靠性直接影响芯片良率。随着工艺节点演进至28nm及更先进制程,通孔缺陷导致的良率损失日益显著,主要表现为完全开路和高阻态两种失效模式。冗余通孔技术通过在关键位置增加备用连接,可有效提升芯片可靠性,其实现涉及物理冗余与电气冗余两种方案。该技术在7nm/5nm工艺中已证明可将通孔相关缺陷率降低10-100倍,但面临设计规则复杂性、规模处理效率和动态合规验证等工业化挑战。智能双切通孔插入流程通过动态DRC规则解析、奇偶层级并行处理和增量式验证等创新方法,显

weixin_35982453的博客 382

ObjectOutputStream的使用

ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。 ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的持久存储。ObjectInputStream 用于恢复那些以前序列化的对象。

xiejunjie1的专栏 3069

保姆级教程:在Windows 10上为QT5.15.2配置Android开发环境(含SDK/NDK/JDK避坑指南)

本文提供了一份详细的Windows 10环境下为QT5.15.2配置Android开发环境的保姆级教程,涵盖SDK、NDK、JDK的安装与配置,以及常见问题的避坑指南。通过优化安装流程、解决Gradle下载慢等痛点,帮助开发者快速搭建稳定的编译环境,并提供了模拟器配置和调试技巧,确保开发效率。

weixin_30919571的博客 527

对象流objectOutputStream 及其实例

通过序列号控制前后版本一致问题 : 默认在读取对象时候会先检查序列号,如果不一致直接抛出异常java.io.InvalidClassException,一致才能正常转换。实现了序列化的类型都默认存在序列号,如果显示定义以定义的为主,没有显示的定义,会存在默认的。不是所有的类型的对象都能实现序列化 java.io.Serializable。如果父类没有实现序列化,子类实现了序列化,子类只能序列化独有内容。如果父类实现了序列化,子类没有实现,子类可以序列化所有内容。2.在settings进行设置。

m0_51170293的博客 824

Day470&471.Netty概述&Netty高性能架构设计 -netty

Netty概述 一、原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。 JDK NIO

阿昌爱Java 1572

使用 ANSYS AEDT(双向耦合)对高功率射频同轴滤波器进行热分析

使用 ANSYS HFSS,可以精确计算 EM 损耗,然后将其导入 ANSYS 热分析并使用 ANSYS Icepak CFD 求解器进行仿真,以帮助工程师解决最复杂的热挑战,并预测其设计在温度变化下的表现。然后,RF 损耗将与 ANSYS Icepak CFD 求解器耦合,以执行热分析,包括传热的传导、对流和辐射模式,并计算温度曲线。在此演示中,我们将仿真下面的 RF 同轴滤波器,并计算由于所用材料的有限电导率和介电损耗而导致的 RF 传导损耗。设置 HFSS 设计后,我们可以开始 HFSS 仿真。

jkh920184196的博客 1050

java中的ObjectInputStream和ObjectOutputStream的使用

一、ObjectOutputStream ObejctOutputStream是将一个对象转化为字节写到一个文件中去,以此来实现对象的持久化保存,这个过程被称为序列化。 构造方法: public ObjectOutputStream(OutputStream out) throws IOException { 写入对象: void writeObject(Object obj) 将指定的对象写入 ObjectOutputStream。 创建步骤: 1、创建ObjectOutp...

qq_38345598的博客 1587

告别TI官网迷路!手把手教你用C2000Ware为TMS320F28027搭建Proteus仿真工程模板

本文详细指导如何使用C2000Ware为TMS320F28027搭建Proteus仿真工程模板,帮助DSP开发者快速上手。从资源获取、工程目录设计到关键文件配置,再到CCS与Proteus的联调技巧,全面解析仿真工程搭建的每个步骤,特别适合初学者和工程师参考。

weixin_42715608的博客 472

JAVA中的ObjectOutputStream类

ObjectOutputStream是Java中用于序列化对象的一种输出流,它可以将Java对象的状态信息转换为字节流,以便于存储或通过网络传输。序列化是将对象转换为字节流的过程,而反序列化则是将字节流恢复为对象的过程。概述 ObjectOutputStream是Java.io包中的一个类,它扩展了OutputStream类,用于写入对象以及基本数据类型到输出流中。当对象被序列化时,对象的字段信息会被保存,从而可以在之后的某个时刻重新构造这个对象。定义一个可序列化的类 首先,我们需要定义一个可序列化的类。

qa3629723的博客 1万+

工业仪表读数识别:YOLO目标检测 + OCR混合方案实战

仪表整体(meter):粗定位整只仪表,用于快速裁剪、排除背景干扰表盘区域(dial):精确的圆形/方形表盘区域,用于后续矫正和读数数字区域(display)/指针(pointer):数显表定位数码管区域,指针表可辅助定位指针为什么要分三级?因为现场仪表安装角度、距离、光照差异极大。先粗检再精检,比一步到位的准确率高很多,也方便后续做透视变换。工业仪表读数识别,技术路线的选择比算法精度更重要。选对了路线,事半功倍;选错了,怎么调都达不到验收标准。几条落地建议:指针表优先传统算法。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 95

YOLOv11全方位改进指南:卷积层、轻量化、注意力、损失函数等创新优化一览

YOLOv11通过八大核心模块的创新设计,在保持YOLO系列实时性的同时显著提升检测精度。本文提出的可变形卷积DCNv4多模态注意力动态解耦头等创新方案,已在工业质检、自动驾驶、无人机巡检等领域成功应用。完整项目地址预训练模型:包含从nano到x六个规格在线演示创新声明首次在YOLO系列集成DCNv4,小目标检测AP提升8.2%提出多模态混合注意力(MMAttention),兼顾通道与空间关系动态标签分配策略使训练效率提升40%

QQ_778132974的博客 1019

java objectoutputstream怎么用_Java ObjectOutputStream 类

Java ObjectOutputStream 类在本教程中,我们将借助示例学习Java ObjectOutputStream及其方法。java.io包的ObjectOutputStream类可用于编写可由ObjectInputStream读取的对象。它继承了OutputStream抽象类。ObjectOutputStream的工作原理基本上,ObjectOutputStream使用类名和对象值对...

weixin_39548733的博客 1266

点云中概念:匹配、配准、融合

匹配,是寻找与一幅图相似的图像(不对寻找到的图像做矫正)。 配准,是寻找相似图像但是变形后的图像(需要做一些旋转之类的校正变换)。 融合,是多幅图像连接成一幅大图,视频集成中用的比较多。 1)匹配: 2)配准: 比如由于固定式激光雷达受测量方式的限制和被测物体集合形状的限制,固定的话一次只能扫描被测物体有限范围的点云数据(比如一个面??),这需要在多个视角下进行多次扫描(就是将激光雷达前后左右四个面都扫一下??对的),然而每个视角下得到点云数据都具有独立的坐标系,无法直接进行拼接(拼接就是将四个面

m0_37957160的博客 1万+

Java IO流 之 ObjectInputStream ObjectOutputStream

http://www.verejava.com/?id=16994699006916package com.io2; import java.io.*; public class TestObjectInputStream { public static void main(String[] args) { OutputStream os=null; ObjectOutputStr...

verejava的博客 209

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[对象的IO流]java对象通过 ObjectOutputStream转成字节流,通过ObjectInputStream还原举例

初学java,学到IO流,我们能经常看到的是一个String类型转化成Byte数组,然后将其还原成String类型;后面就在想对象怎么转成字节数组再还原呢?于是在找资料过程发现了ObjectOutputStream这个对象输出流,可以实现对象的IO;当然,这可能知识java对象的其中一种IO方式,下面是例子: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExcept

i_wavelet的博客 1902

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java IO 读取类对象的流 ObjectInputStream,ObjectOutputStream 使用教程.

一、读取类对象的流 ObjectInputStream,ObjectOutputStream 可以将 对象的实例序列化,和反序列化(不懂没关系看代码) 二、练习 1.要求:储存一个实例化的CriminalSuspect 嫌疑人对象 到txt文件,然后读取出来. 2.分析: 读取类对象的流 ObjectInputStream,ObjectOutputStream 一、作用 : 对象IO流可以储存和取出对象的序列, 要求 对象必须实现接口 序列化接口 Serializable接口 二、使用方法 1.构造 ne

半亩方糖 2173

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java IO流 序列化流 ObjectOutputStream ObjectInputStream

设置完毕之后,鼠标悬停在类名上,点击Add ‘serialVersionUID’ field就可以生成序列化号了,避免了自己瞎写而重复的可能。序列化流读写操作与基本流相同,其中较为实用的就是writeObject与readObject,提供一个案例👇。创建对象传入一个基本流,因为序列化是在基本流上做的封装。先来看看被序列化的类Student👇。如下图所示设置IDEA。

qq_43623492的博客 345

Java IO流 ObjectInputStream类和ObjectOutputStream类

ObjectInputStream类与ObjectOutputStream类两个包装类,用于从底层输入流中读取对象类型的数据和将对象类型的数据写入到底层输出流。

田智文的专栏 1118

Java-IO流-ObjectInputStream与ObjectOutputStream

Java-IO流-ObjectInputStream与ObjectOutputStream 对象流ObjectInputStream,ObjectOutputStream ObjectInputStream:将文件中存储的Java对象读到内存中,这个过程也叫做反序列化 ObjectOutputStream: 将内存中的Java对象写入到本地文件中,这个过程也较多序列化 序列化和反序列...

yy310585的博客 197

Java中的IO流 ObjectInputStream和ObjectOutputStream

ObjectOutputStream写入对象,可以将多个对象放到集合中,一次性将多个对象写入到文件中。对象要实现序列化Serializable 对象流在写入文件时,类重写加载后写入的内容会覆盖之前的内容,所以要先读取原文本的内容并获取之后再继续添加内容 1 package object.io; 2 3 import java.io.FileInputStream; 4...

weixin_30532987的博客 95

Java的IO流--ObjectInputStream和ObjectOutputStream

ObjectInputStream和ObjectOutputStream称为对象输入流和对象输出流,是一个专项流,用于将对象序列化和序列化。 补充结构图: 序列化:将对象“分割排序”将其存储到数据库或者本地硬盘文件中。 反序列化:将本地硬盘上的对象文件经过“组合”加载到内存中。ObjectInputStream和ObjectOutputStream就是这样的一个流,它们能够将对象序列化和反

MindMrWang的blog 531

Java中io流的学习(七)ObjectInputStream和ObjectOutputStream

ObjectInputStream(对象输入流)继承于InputStream,ObjectOutputStream(对象输出流)继承于OutputStream。对象流是将对象的基本数据和图形实现持久存储。ObjectOutputStream实际是在对流进行序列化操作,ObjectInputStream实际是在对流进行反序列化操作,要实现序列化,必须实现Serializable接口,否则是无法进行序...

有问题请发邮箱dengyifanlittle@163.com进行讨论 1652

【Java第107集】java IO流之对象流(ObjectInputStream/ObjectOutputStream)详解

特性描述核心功能实现对象的序列化与反序列化,支持复杂数据结构的持久化和传输。关键类(序列化)、(反序列化)。依赖接口类需实现,字段可通过transient排除序列化。适用场景分布式系统、RMI(远程方法调用)、缓存、日志记录等。注意事项版本兼容性、安全风险、性能优化(结合缓冲流)。

学不可以已,活到老,学到老。 1382

Java IO 流深度解析:对象流与序列化机制(ObjectInputStream/ObjectOutputStream)

本文全面解析Java对象流(ObjectInputStream/ObjectOutputStream)的核心机制与应用。对象流通过序列化实现对象与字节流的转换,支持基本数据类型和对象操作。文章详细介绍了Serializable接口的作用、序列化/反序列化的基本使用流程,强调了serialVersionUID的版本控制重要性。同时探讨了自定义序列化、单例模式处理等高级特性,并分析了序列化的性能与安全考量。对象流作为分布式系统基础技术,需平衡易用性、性能与安全性,在RPC、缓存等场景中发挥关键作用。

qq_40303030的博客 914

Java IO流(超详细!)

一、什么是IO流 I : Input O : Output 通过IO可以完成硬盘文件的读和写。 二、IO流的分类 按照 流的方向 进行分类: 以内存作为参照物: 往内存中去:叫做输入(Input)。或者叫做读(Read)。 从内存中出来:叫做输出(Output)。或者叫做写(Write)。 按照 读取数据方式 不同进行分类: 按照 字节 的方式读取数据,一次读取1个字节byte,等同于一次读取8个二进制位。 这种流是万能的,什么类型的文件都可以读取。包括:文本文件,图片,声音文件,视频文

一只小菜鸡 6万+

Java——IO流 对象的序列化和反序列化流ObjectOutputStream和ObjectInputStream

对象的输入输出流: 主要的作用是用于写入对象信息与读取对象信息。 对象信息一旦写到文件上那么对象的信息就可以做到持久化了  对象的输出流:ObjectOutputStream  对象的输入流: ObjectInputStream 使用: 对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过程,对象的输入流将指定序列化好的文件读出来的过程,就是对象反序列化的过程。既然对象的输出流...

weixin_30725315的博客 102
上一篇: java_IO流之SequenceInputStream合并流的使用
下一篇: java_IO流之PipedInputStream管道流的使用
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值