package com.io.outputstream_;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* 演示ObjectOutStream的使用
*/
public class ObjectOutStream_ {
public static void main(String[] args)throws Exception {
//序列化后,保存的文件格式,不是保存文本,而是按照它的格式来保存
String filePath="d:\\data.dat";
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));
//序列化数据到d:\data.dat
oos.write(100);//(自动装箱)int->Integer(实现了Serializable,因为Integer的父类是Number,而Number实现了Serializable接口)
oos.writeBoolean(true);//(自动装箱)boolean->Boolean(实现了Serializable)
oos.writeChar('a');//char->Character(实现了Serializable)
oos.writeDouble(9.5);//double->Double(实现了Serializable)
oos.writeUTF("沐晴学习");//String(实现了Serializable)
//保存一个dog对象
oos.writeObject(new Dog("旺财",10));
oos.close();
System.out.println("数据保存完毕(序列化形式)");
}
}
//如果需要序列化某个类的对象,实现Serializable接口
class Dog implements Serializable {
private String name;
private int age;
public Dog(String name,int age){
this.name=name;
this.age=age;
}
}
![]()
package com.io.inputstream_;
import jdk.swing.interop.SwingInterOpUtils;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
/**
* ObjectInputStream的使用
*/
public class ObjectInputStream_ {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//指定反序列化文件
String filePath="d:\\data.dat";
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath));
//读取
//注:读取(反序列化)的顺序需要和你保存数据(序列化)的顺序一致
System.out.println(ois.readInt());
System.out.println(ois.readBoolean());
System.out.println(ois.readChar());
System.out.println(ois.readDouble());
System.out.println(ois.readUTF());
Object dog = ois.readObject();
System.out.println("运行类型="+dog.getClass());
System.out.println("狗的信息"+dog);//底层会把Object——>Dog
//关闭流,关闭外层流即可,底层流会自动关闭
ois.close();
}
}
![]()