把文件对象的数据输入到内存中(对象反序列化) 输入(读):硬盘到内存中是 读取数据,所有方法一般和(read)有关
输出(写): 从内存中输出到硬盘(本地) 所以方法一般和write有关


// transient(转瞬即逝的意思) 修饰的成员变量不参与序列化了 [ˈtrænʃnt] 序列化之后这个成员将不会被显示
package com.itheima.d5_serializable;import java.io.FileInputStream;import java.io.ObjectInputStream;/*** 目标:学会进行对象反序化,使用对象字节输入流把文件中的对象数据回复成内存中的Java对象**/public class ObjectInputStreamDemo02 {public static void main(String[] args) throws Exception{// 1. 创建对象字节输入流管道包装成低级的输入流管道ObjectInputStream is = new ObjectInputStream(new FileInputStream("io-app2/src/obj.txt"));// 2. 调用对象字节输入流的反序列化方法 要强转成 学生对象Student s = (Student) is.readObject(); // 将本地文件(硬盘) 输入(读写)到内存中System.out.println(s); // 把对象恢复后输出}}
package com.itheima.d5_serializable;import java.io.Serializable;/*** 对象如果要序列化,必须实现Serializable [ˈsɪˌriəˌlaɪzəbl] (可序列话的意思) 序列化接口*/public class Student implements Serializable {private String name;private String loginName;// transient(转瞬即逝的意思) 修饰的成员变量不参与序列化了 序列化之后这个成员将不会被显示private transient String passWord; // 如果之前被序列化一次,要重新再序列化,然后再进行反序列化private int age;public Student() {}public Student(String name, String loginName, String passWord, int age) {this.name = name;this.loginName = loginName;this.passWord = passWord;this.age = age;}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;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", loginName='" + loginName + '\'' +", passWord='" + passWord + '\'' +", age=" + age +'}';}}
