Java基础-ObjectOutputStream、ObjectInputStream

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读取对象信息的顺序必须要保存对象的顺序一致

posted @ 2022-04-20 15:33  柯南同学  阅读(91)  评论(0编辑  收藏  举报