io流-序列化和反序列化
序列化和反序列化概述
java提供了一种对象序列化的机制 用一个字节序列可以表示一个对象 该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息 字节序列写出到文件之后 相当于文件中持久保存一个对象的信息
反之 该字节序列还可以从文件中读取回来 重构对象 对它进行反序列化 对象的数据、对象类型和对象中存储的数据信息 都可以用来在内存中创建对象
图解:

对象序列化流_ObjectOutputStream
ObjectOutputStream:对象的序列化
作用:把对象以流的方式写入到文件中保存
构造方法:
ObjectOutputStream(OutputStream out):创建写入指定OutputStream的ObjectOutpuStream
参数:
OubputStream:字节输出流
特有的成员方法:
void writeObject(Object obj):将指定的对象写入ObjectOutputStream
使用步骤:
1.创建ObjectOutputStream对象 构造方法中传递字节输出流
2.使用ObjectOutputStream对象中的方法WriteObject 把对象写入到文件中
3.释放资源
代码
实体类 /** * 当我们要使用序列化时 实体类必须实现这个接口Serializable */ public class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } 测试类: public static void main(String[] args) throws IOException { Person p = new Person("张三", 18); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("E:\\file\\序列化.txt")); os.writeObject(p); os.close(); }
运行前:

运行结果:

运行后:

序列化.txt

对象反序列化流_ObjectInputStream
ObjectInputStream反序列化流 将之前使用ObjectOutputStream序列化的原始数据恢复为对象
作用:把文件中保存的对象 以流的方式读取出来使用
构造方法:
ObjectInputStream(InputStream in):创建从指定InputStream读取的ObjectInputStream
参数:
inputSteam in:字节输入流
特有的成员方法:
Object readObject():从ObjectInputStream读取对象
使用步骤:
1.创建ObjectInputStream对象 构造方法中传递字节输入流
2.使用ObjectInputStream对象中的方法readObject读取保存对象的文件
3.释放资源
4.使用读取出来的对象(打印)
代码
public static void main(String[] args) throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\file\\序列化.txt")); Object o = ois.readObject(); ois.close(); /* 反序列化使用前提 1.类必须实现Serializable 2.必须存在类对象的class文件 */ System.out.println(o); }
运行结果:
Person{name='张三', age=18}

浙公网安备 33010602011771号