前言必读

读者手册(必读)_云边的快乐猫的博客-CSDN博客

一、知识点介绍

1.什么是序列化与反序列化?

对象与磁盘的交互读写。

2.为什么要学?

2.1在之前的IO流中,都是内存与磁盘进行交互的读写,要传输只能在本地上进行传输。想要在网络上进行传输,那就要通过进行对象的传输,java万物皆对象嘛。

2.2更好的保存数据,防止数据的丢失。

3.序列化与反序列化?

序列化(对象字节输出流--即写入数据):Java对象数据写入到磁盘文件中。

反序列化(对象字节输入流--即读取数据):读取磁盘文件中的Java对象数据。

4.对象数据?

来自idea里面的中产生的Java数据。

二、例子

1.序列化(ObjectOutputStream)------写入磁盘文件

把代码2的数据通过代码1写入到磁盘文件中。

操作代码1(重点):

package bao;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;public class Test {public static void main(String[] args) throws IOException {//1.创建学生对象并写入数据Student s = new Student("故人","yu","9477",18);//2.使用对象序列化把对象数据写入到指定磁盘文件中去ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("D:\\java_base\\SE\\src\\bao\\风花雪月.txt"));//原先文件夹是空的//3.调用序列化方法os.writeObject(s);os.close();//关闭流}
}
//对象那边一定要实现implements Serializable接口

被测试的对象代码2(可看可不看):

package bao;import java.io.Serializable;public class Student implements Serializable {//这个implements Serializable接口一定不能忘记,要不然会报错的//1.创建对象元素private String name;private String loginName;private transient String passWord;//加入了transient,就不参与序列化。别人就获取不到信息。保护了数据安全private int age;//2.生成set和get方法public String getName() {return name;}public void setName(String name) {this.name = name;}public String getLoginName() {return loginName;}public void setLoginName(String loginName) {this.loginName = loginName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//3.生成的有参构造器public Student(String name, String loginName, String passWord, int age) {this.name = name;this.loginName = loginName;this.passWord = passWord;this.age = age;}//4.生成无参构造器public Student() {}
//5.生成toString方法@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", loginName='" + loginName + '\'' +", passWord='" + passWord + '\'' +", age=" + age +'}';}
}
//生成的快捷键在其他文章中有

运行结果(这是运行成功的,我们看不懂很正常,这是给磁盘看的):

 2.反序列化(ObjectInputStream)------读取磁盘文件

把磁盘文件中存入的对象数据读取出来。取例:读取上述"风花雪月"的对象数据出来

package bao;import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;public class Test {public static void main(String[] args) throws IOException, ClassNotFoundException {//1.创建要读取文件数据的对象(文件中存的数据是对象数据)ObjectInputStream is = new ObjectInputStream(new FileInputStream("D:\\java_base\\SE\\src\\bao\\风花雪月.txt"));//放入要读取的文件地址//2.调用反序列化方法Object s = is.readObject();System.out.println(s);}
}

运行结果:

Student{name='故人', loginName='yu', passWord='null', age=18}

注意点:这个读取的文件来源是上一题(被序列化后的磁盘文件"风花雪月")

旁白:在里面用到了三份文件。

序列化:把对象文件(学生对象)写入到磁盘文件(风花雪月)中 。

反序列化:把磁盘文件(风花雪月)读取出来。

1.其实用到这个也就是为了保存我们开发中的数据保存到磁盘文件中去,防止丢失,还有网络传输对象数据会用到这个。

2.这个就是读写磁盘文件嘛,和之前不同的是,这个读写的是idea里面产生的数据文件,比如一个系统中的用户信息等。

额外扩展知识:要保护一些隐私数据防止其他人读取。就在要保护隐私的数据后面加上transient

所以上面运行出来的passWord就显示为null了。

java中的IO流之序列化与反序列化(对象数据和文件的读写交互)相关推荐

  1. Java中的IO流(六)

    上一篇<Java中的IO流(五)>把流中的打印流PrintStream,PrintWriter,序列流SequenceInputStream以及结合之前所记录的知识点完成了文件的切割与文件 ...

  2. 猿创征文|Java中的IO流大家族 (两万字详解)

    目录 IO流 概述 分类 四大家族 需要掌握的16个流 文件专属 FileInputstream(读 字节) FileInputStream类的其他常用方法 FileOutputStream (写 字 ...

  3. java io流分为,Java中的IO流按照传输数据不同,可分为和

    Java中的IO流按照传输数据不同,可分为和 答:字节流 字符流 克里斯蒂安 · 麦茨指出:想象的能指就是电影的能指,作为象征的科学,在第三视野范围内的解读,它是( ) 答:建立在共同的永久的背景之中 ...

  4. java中的IO流(超全)(超详解)结合实例轻松掌握

    java进阶之IO流 IO流的概念(大纲): 1.InputStream和OutputStream的继承关系图 2.Reader和Writer的继承关系图 3.文件专属流(加※为重点掌握) ※File ...

  5. io流技术java_技术文章-java中的IO流

    1.File类 Java中对文件有操作时,可以实例化一个File对象,将文件路径利用这样的形式赋给File对象. File f = new File(filePath); File类的基本操作包括: ...

  6. Java中的IO流与Properties

    IO流 1 File 1.1 File类概述和构造方法 File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一 ...

  7. Java中的IO流修改

    Java.IO Java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入. Java. ...

  8. java中关于IO流的知识总结(重点介绍文件流的使用)

    今天做软件构造实验一的时候,用到了java文件流的使用,因为之前学的不是很踏实,于是决定今天好好总结一下, 也方便以后的回顾. 首先,要分清IO流中的一些基础划分: 按照数据流的方向不同可以分为:输入 ...

  9. Java中的IO流(最详细解说)

    IO流 一.File类的使用 1.常用构造器 2.路径分隔符 3.常用方法 二.IO流原理 Java IO原理 三.流的分类 1.输入流 (1)InputStream & Reader (2) ...

最新文章

  1. 使用WinINet和WinHTTP实现Http訪问
  2. 反向代理or后端nginx 生产用于缓存视频需要解决的问题
  3. WAIC 2021 | 中国惠普周信宏:AI基础设施——边缘计算演进及趋势
  4. ASP.NET验证码C#
  5. 【Object类、日期、StringBuilder】
  6. [python opencv 计算机视觉零基础到实战] 七、逻辑运算与应用
  7. JVM专题之垃圾回收器
  8. 双11数据过于完美涉嫌造假?天猫:造谣要负法律责任的哦
  9. xtrabackup mysql8.0_Percona XtraBackup 8.0, 安装与测试
  10. jdbc驱动程序类型_JDBC驱动程序类型
  11. 自编基于jQuery实现分页插件
  12. paip.DEVSUITE DEVTEST 404错误
  13. 视易服务器查看硬盘状态,Linux服务器使用Smartmontools检测硬盘状况 | 厘米天空
  14. PCB 18种特殊走线的画法与技巧!
  15. 职称计算机个人档案号查询,干部人事档案编号在线查询
  16. 送抖音直播云挤地铁教程
  17. axure中继器求和_Axure学习笔记-中继器
  18. Stream流--java.lang.IllegalStateException: stream has already been operated upon or closed
  19. SSRF盲打 Collaborator everywhere
  20. 恭喜Minya Konka获得第一块银牌!

热门文章

  1. C# 隐式转换关键字 implicit
  2. 五金机电行业智慧供应链平台开发,推进传统产业创新发展
  3. 详细讲解磁盘及文件系统管理(图例解析)
  4. css .clearfix,网页CSS中的.clearfix是什么意思
  5. 频繁跳槽是经济发展的必经路
  6. VSCode调试单片机
  7. WeTest重磅推出云测试专有云解决方案,助力企业打造全球精品应用
  8. 7-5 树种统计(25分)
  9. ESET NOD32 免费一年 激活码获取教程
  10. oracle数据库validate,使用RMAN VALIDATE验证数据和备份