I/O————对象流
对象流指的是可以直接把一个对象以流的形式传输给其他的介质,比如硬盘
一个对象以流的形式进行传输,叫做序列化。 该对象所对应的类,必须是实现Serializable接口
对象的序列化与反序列化就是从文件中使用对象输出流和对象输入流保存、读出对象
新建一个Hero类实现Serializable接口
public class Hero implements Serializable{ //表示当前类的版本,若类发生了变化则修改它的值 private static final long versionId=1l; public String name; public float hp; }
测试类:
public class ObjectStreamTest { public static void main(String[] args) { Hero hero = new Hero(); hero.name="亚索"; hero.hp=616; File file = new File("D:\\lolfilder\\objectstream.txt"); try( //创建对象输出流 FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos); //创建对象输入流 FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(fis); ) { oos.writeObject(hero); Hero hero2 = (Hero)ois.readObject(); System.out.println(hero2.name); System.out.println(hero2.hp); } catch (Exception e) { e.printStackTrace(); } }
}
其中对象保存在文件中的结果:(ObjectOutputStream/ObjectInputStream 是基于二进制流的序列化,序列化之后内容只是二进制数据,另外,它们不专门为文件准备的,可以直接输出到 socket 流,那些是给机器读写的,没必要整成人能看懂的文本文件)