对象流的序列化和反序列化
概念:
序列化:把一个对象以二进制的形式存入磁盘中,这样的一种传输方式就叫做序列化,就是把对象写入文件
反序列化:自然就是从磁盘中拿出这个对象,这个还原的过程就叫做反序列化。就是拿出文件中的对象
具体实现:
java的对象流中有的两个类:
ObjectOutputStream
:将java对象的基本数据类型写入OutputStream
ObjectInputStream
:对以前使用ObjectOutputStream写入的基本数据和对象进行反序列化
代码演示:
写一个需要序列化的对象(需要实现Serialiable接口):
class Dog implements Serializable {private int age;private String name;public Dog(int age, String name) {this.age = age;this.name = name;}// get,set,toString
}
序列化代码:
public class Test9 {public static void main(String[] args) {Dog dog1 = new Dog(12, "lili");Dog dog2 = new Dog(13, "苍老师");Dog dog3 = new Dog(14, "王五");Dog dog4 = new Dog(15, "李四");Dog[] dogs = {dog1,dog2,dog3,dog4};writeObject(dogs);}/*** 序列化方法*/private static void writeObject(Dog... dog) {try {// 需要写入的文件位置OutputStream outputStream = new FileOutputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\Dog.obj");ObjectOutputStream objectOutput = new ObjectOutputStream(outputStream);objectOutput.writeObject(dog);objectOutput.close();} catch (IOException e) {e.printStackTrace();}}
}
反序列化方法:
private static void readObject() {try {InputStream inputStream = new FileInputStream("E:\\idea_workspace3\\yangli\\class_obj\\src\\com\\lili\\file\\Dog.obj");ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);Dog[] o = (Dog[]) objectInputStream.readObject();objectInputStream.close();System.out.println(Arrays.toString(o));} catch (IOException | ClassNotFoundException e) {e.printStackTrace();}}
扩展:
transient关键字:
如果transient声明一个实例变量,当对象存储时,它的值会被忽略,例如
private transient int id;
对象流的序列化和反序列化相关推荐
- 【Java-IO】File、搜索删除剪切、字符集、字符编码、字节流、将内存中的数据写入文件、字符流、缓冲流、Scanner、格式化输出、数据流、对象流、序列化与反序列化、Files工具类
IO 文章目录 IO 简介 File 分隔符.大小写 常用方法 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 字节 ...
- java-IO流(4)-对象流及其序列化介绍
目录 1对象流 2序列化和反序列化 2.1序列化ObjectOutputStream 2.1.1声明形式 2.1.2构造函数 2.1.3特有方法 2.2反序列化ObjectInputStream 2. ...
- IO流 (五) ----- 对象数据的序列化与反序列化
相关文章: <IO流 (一) ----- 基本概念和File类> <IO流 (二) ----- 文件流> <IO流 (三) ----- 字符流和字符缓冲流> < ...
- oracle存储过程如何传递一个bean对象_对象传输,序列化和反序列化
一.前言 二.基本概念 2.1 序列化和反序列化的定义及最重要的作用 序列化的定义:Java序列化就是指把Java对象转换为字节序列的过程: 反序列化的定义:Java反序列化就是指把字节序列恢复为Ja ...
- C#二进制流的序列化和反序列化操作
C#项目中较多使用了序列化和反序列化,较为常用的序列化和反序列化操作有二进制流,JSON,XML等,现在介绍一下.net中二进制流的序列化和反序列化操作方法: 1.将对象序列化为二进制流: /// & ...
- 深圳Java培训:Java中的对象流和序列化
深圳Java培训:Java中的对象流和序列化 最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流. 看起来还是挺简单的,那么看下面的例子: public class St ...
- java流与文件——对象流和序列化
[0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--对象流和序列化 的相关知识: 0.2) for source code , pleas ...
- 序列化对象C++对象的JSON序列化与反序列化探索
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...
- java中的IO流之序列化与反序列化(对象数据和文件的读写交互)
前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 一.知识点介绍 1.什么是序列化与反序列化? 对象与磁盘的交互读写. 2.为什么要学? 2.1在之前的IO流中,都是内存与磁盘进行交互的读 ...
- java流的序列化_Java中的对象流和序列化介绍
最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流. 看起来还是挺简单的,那么看下面的例子: public class Student{ private int id; ...
最新文章
- 单片机简单的计算器c语言程序,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
- java.lang.IllegalStateException: Error starting child错误的产生与解决
- windows下通过eclipse进行远程执行出错:Permission denied:
- 12个Visual Studio调试效率技巧
- MVC学习笔记1 MVC概述
- 两个链表第一个公共节点
- 数学归类你倾向于哪一方?
- GB28181系统设计(三)-进程通信让python获取共享内存数据
- Python字符串join()方法
- vscode之调试es6代码
- android开发(37) android使用android_serialport_api 操作串口,解决权限问题
- 【ARM汇编】ARM 指令集和Thumb 指令集
- 中年失业是一种什么体验
- 免费创建GOOGLE共享网盘
- 全文检索——Lucene
- 青龙面板哔哩哔哩抽奖白嫖
- Chrome浏览器获取Google搜索结果批量URL
- 论文翻译及笔记【Quantifying Societal Bias Amplification in Image Captioning】
- springMVC源码分析--访问请求执行ServletInvocableHandlerMethod和InvocableHandlerMethod
- IoT物联网设备OTA:全量升级和增量升级