把文件对象的数据输入到内存中(对象反序列化) 输入(读):硬盘到内存中是 读取数据,所有方法一般和(read)有关
    输出(写): 从内存中输出到硬盘(本地) 所以方法一般和write有关
    image.png
    image.png
    image.png
    // transient(转瞬即逝的意思) 修饰的成员变量不参与序列化了 [ˈtrænʃnt] 序列化之后这个成员将不会被显示
    image.png

    1. package com.itheima.d5_serializable;
    2. import java.io.FileInputStream;
    3. import java.io.ObjectInputStream;
    4. /**
    5. * 目标:学会进行对象反序化,使用对象字节输入流把文件中的对象数据回复成内存中的Java对象
    6. *
    7. */
    8. public class ObjectInputStreamDemo02 {
    9. public static void main(String[] args) throws Exception{
    10. // 1. 创建对象字节输入流管道包装成低级的输入流管道
    11. ObjectInputStream is = new ObjectInputStream(new FileInputStream("io-app2/src/obj.txt"));
    12. // 2. 调用对象字节输入流的反序列化方法 要强转成 学生对象
    13. Student s = (Student) is.readObject(); // 将本地文件(硬盘) 输入(读写)到内存中
    14. System.out.println(s); // 把对象恢复后输出
    15. }
    16. }
    1. package com.itheima.d5_serializable;
    2. import java.io.Serializable;
    3. /**
    4. * 对象如果要序列化,必须实现Serializable [ˈsɪˌriəˌlaɪzəbl] (可序列话的意思) 序列化接口
    5. */
    6. public class Student implements Serializable {
    7. private String name;
    8. private String loginName;
    9. // transient(转瞬即逝的意思) 修饰的成员变量不参与序列化了 序列化之后这个成员将不会被显示
    10. private transient String passWord; // 如果之前被序列化一次,要重新再序列化,然后再进行反序列化
    11. private int age;
    12. public Student() {
    13. }
    14. public Student(String name, String loginName, String passWord, int age) {
    15. this.name = name;
    16. this.loginName = loginName;
    17. this.passWord = passWord;
    18. this.age = age;
    19. }
    20. public String getName() {
    21. return name;
    22. }
    23. public void setName(String name) {
    24. this.name = name;
    25. }
    26. public String getLoginName() {
    27. return loginName;
    28. }
    29. public void setLoginName(String loginName) {
    30. this.loginName = loginName;
    31. }
    32. public String getPassWord() {
    33. return passWord;
    34. }
    35. public void setPassWord(String passWord) {
    36. this.passWord = passWord;
    37. }
    38. public int getAge() {
    39. return age;
    40. }
    41. public void setAge(int age) {
    42. this.age = age;
    43. }
    44. @Override
    45. public String toString() {
    46. return "Student{" +
    47. "name='" + name + '\'' +
    48. ", loginName='" + loginName + '\'' +
    49. ", passWord='" + passWord + '\'' +
    50. ", age=" + age +
    51. '}';
    52. }
    53. }