对象的序列化:把java对象转换为字节序列的过程。
对象的反序列化:把字节序列恢复为java对象的过程。
对象的序列化主要有两种用途:
(1)把对象的字节序列永久保存到硬盘上,通常存放在一个文件中;
(2)在网络上传送对象的字节序列。
JDK类库中的序列化API
(1)java.io.ObjectOutputStream 代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。
(2) java.io.ObjectInputStream 代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们发序列化成一个对象,并将其返回。
注:只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则ObjectOuputStream的writeObject(Object obj)方法会抛出IOException。
对象的序列化主要包括以下步骤:
(1)创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:\\objectFile.obj"));
(2)通过对象输出流的writeObjec(Object obj)方法写对象:
out.writeObject("hello"); //写一个String对象
out.writeObject(new Date()); //写一个Date对象
对象的反序列化主要包括以下步骤:
(1)创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流:
ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:\\objectFile.obj")));
(2)通过对象输入流的readObject()方法读取对象:
String obj1 = (String)in.readObject(); //读取一个String对象
Date obj2 =(Date)in.readObject(); //读取一个Date对象
【例】对象的序列化与反序列化简单实现
public class ObjectSerialSample {
//序列化对象存储路径
private static final String objectFilePath ="d:\\objectFile.obj";
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(objectFilePath));
String obj1 ="hello";
Date obj2 = new Date();
Customer obj3 = new Customer("yw",25);
//序列化对象
out.writeObject(obj1);
out.writeObject(obj2);
out.writeObject(obj3);
out.writeInt(1234);//写入基本类型的数据
out.close();
//反序列化
ObjectInputStream in = new ObjectInputStream(new FileInputStream(objectFilePath));
String obj11 = (String)in.readObject();
System.out.println("obj11="+obj11);
System.out.println("obj11==obj1:"+(obj11==obj1));
Date obj22 =(Date)in.readObject();
System.out.println("obj22:"+obj22);
System.out.println("obj22==obj2:"+(obj22==obj2));
Customer obj33 = (Customer)in.readObject();
System.out.println("obj33:"+obj33);
System.out.println("obj33==obj3:"+(obj33==obj3));
//读取基本类型的数据
int var = in.readInt();
System.out.println("var:"+var);
in.close();
}
在String、Date和Customer对象进行反序列化时,都没有调用类的构造方法,而是直接根据它们的序列化数据在内存中创建新的对象
分享到:
相关推荐
本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)...进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、Servlet、JSP、XML解析、单例模式与枚举。本专栏主要为Java入门者提供实验参考。
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
1、 java.util.HashMap 重写了 readObject 方法: 2、 java.net.URL 对象的 hashCode 在计算时会调用 get
JSONtext对象序列化序列化LabVIEW:trade_mark:对象。 目录关于该项目提供JSONtext扩展,以将对象从JSON序列化到JSON。建于入门要启动并运行本地副本,请遵循以下简单步骤。先决条件LabVIEW:trade_mark:2017或更高...
BooPickle是在Scala和上均可使用的,最高效的序列化(即酸洗)库。 它编码为二进制格式,而不是更常规的JSON。 二进制格式以大小和速度方面的效率提高为代价,以编码数据的易读性为代价。 BooPickle大量地从和借用...
可以在找到有关 Azure ML 中 R 对象的序列化和反序列化的配套视频。背景本文中的讨论使用在我的 Azure ML 中的 R 快速入门指南中创建的模型。 如果您尚未阅读我的。 该代码在此可用。 配套视频可用: 。在执行 R ...
第一章 缓冲流昨天学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
为了创建BCF,您将需要实例化各种对象以形成BCF对象,请查看Xbim.BCF.Tests.BCFTestsXMLHelper以查看每个对象的示例(根据使用情况而有所不同)。 创建完成后,调用BCF.Serialize()获得BCF文件的流。 XBIM-可扩展...
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
将远程对象序列化后,传输到本地,操作其副本,对远程原对象不产生任何影响 通道: 1.客户端和服务端的通信(电话线) 服务器端舰艇特定通道上的特定端口 服务端通过该通道与Server端交互 2.内置的通道 HTTP ...
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
调用序列化与自动完成 COM管道 COM管道接口 异步管道与提前读取 调用对象与调用取消 调用取消请求 调用取消处理 轻量级处理器 标准LWH 自定义LWH 小结 第六部分 调试与部署COM和COM+应用程序 第18章 ...
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
它允许发送纯文本(JSON,XML,CSV或任何其他自定义格式)类型的kafka消息以及Java序列化的对象。 入门 Pepper-Box包含四个主要组件 PepperBoxKafkaSampler :这是jmeter Java采样器将消息发送到kafka。 Pepper-...
Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 ...
连载 将表单数据序列化为查询字符串,数组,对象或JSON字符串。 安装 脚本标签 最简单的入门方法是通过HTML [removed][removed]标记使用jsDelivr CDN。...序列化还使用ES模块import语法支持现代浏览器
NorbCreator是一个Java工具,可用于序列化(NYU对象识别基准)图像。 它最初的设计目的是为了适合作者Maltoni,D&Lomonaco,V发表的论文中所述的研究目的。它也可以轻松扩展以管理任何其他图像数据集。 如果要使用...
- 对象序列化——Ink对象利用内置的Ink序列化功能,以便对象状态可以与Ink故事的其余部分一起保存和加载。 - Unity运行时对象——带有简便可视化状态的对象。使用Ink/Unity集成的项目可以访问反映其在Ink故事中当前...