package com.hspedu.io_;
import org.junit.Test;
import java.io.*;
public class TestSaveObjectFile {
// ObjectOutputStream保存对象、ObjectInputStream读取对象
@Test
public void saveObjByObjectOutputStream() throws IOException {
String savePath = "e:\\JavaIO\\ObjectOutputStream\\data.dat";
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(savePath));
objectOutputStream.writeInt(10);
objectOutputStream.writeUTF("hello, world!");
objectOutputStream.writeDouble(20.5);
objectOutputStream.writeBoolean(true);
Cat cat = new Cat("小白", 3);
objectOutputStream.writeObject(cat);
objectOutputStream.close();
System.out.println("保存完毕");
}
@Test
public void readObjByObjectInputStream() throws IOException, ClassNotFoundException {
String readPath = "e:\\JavaIO\\ObjectOutputStream\\data.dat";
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(readPath));
int i = objectInputStream.readInt();
System.out.println("i = " + i);
String s = objectInputStream.readUTF();
System.out.println("s = " + s);
double d = objectInputStream.readDouble();
System.out.println("d = " + d);
boolean b = objectInputStream.readBoolean();
System.out.println("b = " + b);
Object object = objectInputStream.readObject();
System.out.println(object + "的运行类型是:" + object.getClass());
Cat cat = (Cat) object; // 转换编译类型为Cat,调用eatFish方法
cat.eatFish();
objectInputStream.close();
}
}
class Cat implements Serializable {
private String name;
private int age;
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public void eatFish() {
System.out.println("猫吃鱼..");
}
}
注意:1、ObjectOutputStream保存的对象,其类必须实现(implements) Serializable接口;2、ObjectInputStream读取对象信息的顺序必须要保存对象的顺序一致