对象的输入输出流的作用: 用于写入对象 的信息读取对象的信息。 对象的持久化。 比如:用户信息。
ObjectInputStream : 对象输入流
ObjectOutPutStream :对象输出流
对象输入输出出流的使用注意点:
1.如果想将一个对象写入到磁盘中,那么对象所属的类必须要进行序列化实现Serializable接口,Serializable接口没有任何方法 ,是一个标记接口
2.如果对象所属的类的成员变量发生改变,你在读取原来的对象是就会报错,如果想要解决报错,保证serialVersionUID是唯一。
3.如果你不想将某些信息存入到磁盘 就可以同过transient关键字修饰成员变量
4.如果一个类中引用了另外的一个类,那么另外的这个类也要实现Serializable接口。
package com.beiwo.io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Cat implements Serializable { private static final long serialVersionUID = 1L; // 保证所取对象信息唯一 String name; public Cat(String name) { // TODO 自动生成的构造函数存根 this.name = name; } @Override public String toString() { // TODO 自动生成的方法存根 return "cat.name" + this.name; } } class Person implements Serializable { private static final long serialVersionUID = 1L; // 保证所取信息唯一 String name; int age; int id; String sex; // 如果不想把某些信息存入磁盘中 ,则需要通过transient关键字修饰成员变量 transient String password; Cat cat; // 构造方法 public Person(String name, int age, int id, String password, Cat cat){ this.name = name; this.age = age; this.id = id; this.password = password; this.cat = cat; } } public class demo4 { /** * @param args * @throws IOException * @throws ClassNotFoundException */ public static void main(String[] args) throws IOException, ClassNotFoundException { // 调用方法 writeObject(); readObject(); } // 读取数据到磁盘中 public static void readObject() throws IOException, ClassNotFoundException { // TODO 自动生成的方法存根 // 找到目标文件 File file = new File("C:\Users\cdlx2016\Desktop\2\cc.txt"); // 建立通道 FileInputStream inputStream = new FileInputStream(file); // 创建对象输入流 ObjectInputStream objectInputStream = new ObjectInputStream(inputStream); // 读取数据 Person person = (Person)objectInputStream.readObject(); // 打印数据 System.out.println("name: " + person.name + " age: " + person.age + " id: " + person.id + " 密码:" + person.password + " cat: " + person.cat); // 关闭数据 objectInputStream.close(); } // 写入对象 private static void writeObject() throws IOException { // 找到目标文件 File file = new File("C:\Users\cdlx2016\Desktop\2\cc.txt"); // 建立通道 FileOutputStream fileOutputStream = new FileOutputStream(file); // 创建对象输出流 ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); // 创建对象 Person person = new Person("李四", 20, 1203, "369852", new Cat("大肥")); // 写入数据 objectOutputStream.writeObject(person); // 关闭流 objectOutputStream.close(); } }