概念:

  序列化就是将对象的状态存储到特定的介质中的过程,也就是将对象状态转换为可保持或传输格式的过程。

  反序列化则是从特定存储介质中将数据重新构建对象的过程。可以将存储在文件上的对象信息读取,然后重新构建为对象。

过程:

  将对象的公有成员、私有成员包括类名,转换为字节流---》写入数据流---》存储到存储介质中(文件)。

意义:

  将java对象序列化后,可以将其转换为自己序列,这样就可以保存在磁盘上,也可以借助网络进行传输。

  对象的保存是二进制状态,实现了平台的无关性。

import java.io.Serializable;
/** Serializable:用于给被序列化的类加入ID号。* 用于判断类和对象是否是同一个版本。 */
//Person诶实现Serializable接口,代表这个类可被序列化
public class Person implements Serializable/*标记接口*/ {/*** transient:非静态数据不想被序列化可以使用这个关键字修饰。 */private static final long serialVersionUID = 9527l;private transient String name;private static int age;public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import cn.itcast.io.p2.bean.Person;public class ObjectStreamDemo {/*** @param args* @throws IOException * @throws ClassNotFoundException */public static void main(String[] args) throws IOException, ClassNotFoundException {//        writeObj();
        readObj();}public static void readObj() throws IOException, ClassNotFoundException {//ObjectInputStream 对象输入流ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object"));//对象的反序列化。需要类型转换。 Person p = (Person)ois.readObject();System.out.println(p.getName()+":"+p.getAge());ois.close();}public static void writeObj() throws IOException, IOException {//ObjectInputStream 对象输出流ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));//对象序列化。  被序列化的对象必须实现Serializable接口。 oos.writeObject(new Person("小强",30));oos.close();}}

转载于:https://www.cnblogs.com/fifiyong/p/6010652.html

I/O(输入/输出)---序列化与反序列化相关推荐

  1. 【Java-IO】File、搜索删除剪切、字符集、字符编码、字节流、将内存中的数据写入文件、字符流、缓冲流、Scanner、格式化输出、数据流、对象流、序列化与反序列化、Files工具类

    IO 文章目录 IO 简介 File 分隔符.大小写 常用方法 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 字节 ...

  2. 【Java基础】Java IO编程:输入输出流、内存流、打印流、缓冲流BufferedReader、扫描流Scanner、序列化与反序列化

    文章目录 第11章.Java IO编程 11.1 文件操作类:File 11.2 字节流与字符流 字节输出流:OutputStream OutputStream类 FileOutputStream类 ...

  3. 2021-04-26 用文件输入输出流来学习对象序列化与反序列化

    对象序列化解决的问题:如何去发送对象的内容及如何接收解析对象的内容 序列化:把Java对象转换为字节序列的过程 写对象 反序列化:把字节序列恢复为Java对象的过程 读对象 序列化步骤: 1.创建一个 ...

  4. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  5. Java 中序列化与反序列化

    一. 序列化和反序列化概念 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.将程序中的对象,放入文 ...

  6. java 的序列化和反序列化的问题

    引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口, ...

  7. django中序列化、反序列化过程

    一.定义序列化器 a.如果需要使用DRF框架来实现序列化.反序列化.数据库操作,在子应用中创建serializers.py文件 b.文件名推荐命名为serializers.py 在serializer ...

  8. python中常用的序列化模块_Python中的序列化和反序列化

    为什么要序列化 内存中的字典.列表.集合以及各种对象,如何保存到一个文件中. 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列.所以必须把数据额转换为字节序列,输出到文件, ...

  9. ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化

    场景 ProtoBuf简介 protocol buffers 是一种语言无关.平台无关.可扩展的序列化结构数据的方法,它可用于(数据)通信协议.数据存储等. Protocol Buffers 是一种灵 ...

最新文章

  1. ESXi主机与网络中其他主机的网咯数据包捕获
  2. [置顶]       jQuery乱谈(六)
  3. python numpy.mean() axis参数使用方法【sum(axis=*)是求和,mean(axis=*)是求平均值】
  4. Beef加载MSF插件
  5. python3 爬虫--Chrome以及 Chromedriver安装配置
  6. Redhat ssh服务登录慢
  7. 商业认知,在投资的时候,为什么别人是经常赚钱,而你却是亏损不断,让我们亏损的根源是什么?
  8. 软件开发的变化并不大
  9. JS的 setTimeout 和 bind 使用 、复选框限制选定数据jq
  10. 计算机系第一学期电脑,公共课第一学期《计算机基础》.doc
  11. word 中快速加入序号等符号
  12. matlab:xlsread
  13. intel固态硬盘损坏修复
  14. 小学计算机课教学设计加教学反思,小学计算机教育教学反思随笔
  15. 2015年-读书笔记
  16. re学习笔记(65)BUUCTF - re - [GKCTF2020]Chellys identity
  17. 如何在线绘制简单又漂亮的思维导图
  18. 神经网络偏置值怎么显示,神经网络的偏置和阈值
  19. 现实版龙王赘婿?乔布斯和Mac OS的前世今生
  20. (五十四)Android O WiFi 获取扫描结果流程梳理

热门文章

  1. c++ 计算正弦的近似值_一篇文章搞懂正弦保真性
  2. CAN总线技术 | 数据链路层04 - CAN节点状态与错误处理机制
  3. RTX5 | 消息队列04 - (实战技巧)串口中断回调函数ISR同步线程
  4. c语言用递归方法实现冒泡排序,C语言 冒泡排序 递归法
  5. two.js文档阅读笔记-two.js的基本使用
  6. Qt文档阅读笔记-Qt单元测试中模拟GUI事件
  7. Flask笔记-静态资源和链接的管理
  8. C++设计模式-外观模式
  9. Spring Boot关于thymeleaf公共页面抽取
  10. Qt工作笔记-QVector与QMap查找效率实战