0
点赞
收藏
分享

微信扫一扫

Java IO流之对象输入输出流

时光已翩然轻擦 2022-04-08 阅读 69

IO 对象输入输出流

  • 什么是对象?
     对象指的就是java运行过程中产生的对象 如: new Date() , new String()

  • 对象输入输出流 :
    主要的作用是用于写入对象信息与读取对象信息。 对象信息 一旦写到文件上那么对象的信息就可以做到持久化了

    • 对象的输出流: ObjectOutputStream

    • 对象的输入流: ObjectInputStream

  • 对象序列化

    • 对象的寿命通常随着生成该对象的程序的终止而终止。 有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。

    • 对象序列化: 对象的输出流将指定的对象写入到文件的过程,就是将对象序列化的过程

    • 对象反序列化: 对象的输入流将指定序列化好的文件读出来的过程,就是对象反序列化的过程。

  • 既然对象的输出流将对象写入到文件中称之为对象的序列化,所以必须要实现 Serializable接口

    • Serializable接口中没有任何方法。当一个类声明实现Serializable接口后, 表明该类可被序列化。

    • 会为类生成一个序列化id号,是唯一与类对应的

  • 代码示例:

    • 创建实现了Serializable接口的类

      package 对象输入输出流;
      ​
      import java.io.Serializable;
      ​
      public class User implements Serializable {
      ​
          private String userName;
          private int password;
      ​
          public User(){
      ​
          }
          public User(String userName, int password) {
              this.password=password;
              this.userName=userName;
          }
      ​
          public String getUserName() {
              return userName;
          }
      ​
          public void setUserName(String userName) {
              this.userName = userName;
          }
      ​
          public int getPassword() {
              return password;
          }
      ​
          public void setPassword(int password) {
              this.password = password;
          }
      }
      ​

    • 对象序列化与反序列化

      package 对象输入输出流;
      ​
      import java.io.*;
      import java.sql.DatabaseMetaData;
      import java.util.Date;
      ​
      public class Demo {
      ​
          public static void main(String[] args) throws IOException, ClassNotFoundException {
      ​
              /*
                这里我们创建三个对象
              */
              Date date = new Date();
              String s = new String("11");
              User user = new User();
      ​
              //对象序列化
           /*   FileOutputStream out = new FileOutputStream("F:/object.txt");
              ObjectOutputStream objos = new ObjectOutputStream(out);
                  objos.writeObject(date);
                  objos.writeObject(s);
                  objos.writeObject(user);
                  objos.flush();
                  objos.close();*/
      ​
              //对象反序列化
              FileInputStream in = new FileInputStream("F:/object .txt");
              ObjectInputStream objin = new ObjectInputStream(in);
      ​
              Date date1 = (Date)objin.readObject();
              String s1 = (String)objin.readObject();
              User user1 = (User)objin.readObject();
      ​
              System.out.println(date1);
              System.out.println(s1);
              System.out.println(user1);
          }
      }
      ​

举报

相关推荐

0 条评论