Java IO流之对象输入输出流
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); } }