IO其他流--处理流保留数据+引用数据类型
来源:互联网 发布:can数据帧的格式结构 编辑:程序博客网 时间:2024/06/04 08:22
序列化和反序列化
在前面已经说过,基本类型+String数据+类型的保留,这节有点类似,说的是引用数据的数据和类型的保留。它们有另外的名称序列化和反序列化。
——反序列化(将数据结构或对象转换成二进制串的过程,从文件或字节数组中取出对象) 输入流:ObjectInputStream readObject()
——序列化(将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程,把对象保存到文件或字节数组中) 输出流:ObjectOutputStream writeObject()
——注意:
————1)先序列化后反序列化;反序列化顺序必须与序列化一致
————2)不是所有对象都可以序列化,类必须实现java.io.Serializable;不是所有对象的属性都需要序列化,不需要的添加关键字transient
数据结构和对象:对于类似Java这种完全面向对象的语言,工程师所操作的一切都是对象(Object),来自于类的实例化。在Java语言中最接近数据结构的概念,就是POJO(Plain Old Java Object)或者Javabean--那些只有setter/getter方法的类。而在C++这种半面向对象的语言中,数据结构和struct对应,对象和class对应。
package cn.feng.others;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;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 java.util.Arrays;public class ObjectDemo01 { public static void main(String[] args) { try { seri("D:/安装包/aa/bb/dd/b.txt"); read("D:/安装包/aa/bb/dd/b.txt"); } catch (Exception e) { e.printStackTrace(); } } /** * 序列化 * @throws IOException * @throws FileNotFoundException */ public static void seri(String desPath) throws FileNotFoundException, IOException{ Employee emp = new Employee("张三",100000); int[] arr = {1,2,3,4,5}; //创建源 File des = new File(desPath); //选择流ObjectOutputStream ObjectOutputStream oos = new ObjectOutputStream( new BufferedOutputStream(new FileOutputStream(des)) ); //操作 写出的顺序与读取的顺序必须一致 为读取准备 oos.writeObject(emp); oos.writeObject(arr); //释放资源 oos.close(); } /** * 反序列化 * @throws IOException * @throws FileNotFoundException */ public static void read(String srcPath) throws FileNotFoundException, IOException, ClassNotFoundException{ //创建源 File src = new File(srcPath); //选择流 ObjectInputStream ois = new ObjectInputStream( new BufferedInputStream(new FileInputStream(src)) ); //操作 读取的顺序与写出一致且必须存在才能读取 //顺序不一致,数据存在问题 Object obj = ois.readObject(); if(obj instanceof Employee){ Employee emp = (Employee)obj; System.out.println(emp.getName());//没有序列化的属性,内容:null System.out.println(emp.getSalary());//内容:100000.0 } obj = ois.readObject(); int[] arr = (int[])obj; System.out.println(Arrays.toString(arr));//内容:[1, 2, 3, 4, 5] //释放资源 ois.close(); }}
阅读全文
0 0
- IO其他流--处理流保留数据+引用数据类型
- IO其他流--处理流保留数据+基本数据类型
- IO流第十三课,其他流,基本数据类型处理流
- IO_其他流_基本数据类型+String处理流JAVA158
- IO流-其他流
- IO流-其他流
- 其他类、IO流
- 其他IO流
- IO流其他类
- 其他IO流对象
- IO数据类型转换流
- Java--IO流(其他流)
- IO流(五)其他流
- 黑马程序员---IO其他流
- 黑马程序员--IO其他流
- 黑马程序员--Java学习日记之IO流(其他流&异常处理)
- 黑马程序员-----Java基础-----File,Properties和其他IO处理流
- oracle 数据库修改数据类型,保留原来数据
- python-在Windows下使用virtualenv
- OSI参考模型中各层的作用
- Eclipse中的项目名后NO-HEAD、项目名后不显示maven.日期版本号的问题
- WM修改屏幕分辨率 —加快手机运行速度—一机也能做适配
- YTU.1317: 控制台表格
- IO其他流--处理流保留数据+引用数据类型
- PostgreSQL备份与恢复示例
- 【安全牛学习笔记】离线密码破解、离线密码破解-Hashcat
- Linux中的输入输出管理及vim的简单操作
- LeetCode 135. Candy
- 拷贝构造函数、赋值函数浅析
- SSH 无法启动的原因分析及解决方法
- 使用commons-beanutils-1.8.3.jar提供的BeanUtils类快速封装属性时,遇到的错误
- LeakCanary使用(Android试手)