IO流之对象流

  1. 序列化:将内存中的java对象保存到磁盘中或通过网络传输出去
  2. 反序列化:将磁盘文件中的对象还原为内存中的一个Java对象

package com.yicurtain.IO;

import org.junit.Test;

import java.io.*;

public class ObjectInputOutputStreamTest {
//序列化过程
@Test
public void test1(){
ObjectOutputStream oos = null;
try {
// 1.创建文件路径和对象流
oos = new ObjectOutputStream(new FileOutputStream("object.dat"));
// 2.写出操作
oos.writeObject(new String("我爱北京天安门"));
oos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (oos!=null)
// 3. 关闭流
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}





}

//反序列化过程
@Test
public void test2(){
ObjectInputStream ois = null;
try {
// 1.创建文件路径和对象流
ois = new ObjectInputStream(new FileInputStream("object.dat"));
// 2.写出操作
Object obj = ois.readObject();
String str=(String)obj;
System.out.println(str);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
try {
if (ois!=null)
// 3.关闭流
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}




}
}

自定义类实现序列化

Person类需要满足如下要求,方可序列化

  1. 需要实现接口:Serializable
  2. 当前类提供一个全局常量:public static final long serialVersionUID = 456789L;
  3. 当前类的所有属性也必须满足时可序列化的。(默认情况下,基本数据类型是可序列化的)
  4. ObjectInputStream和ObjectOutputStream不能序列化static和transient修饰的成员变量。

序列化机制(重要)

​ 对象序列化机制允许 把内存中的Java对象转换成平台无关的二进制流,从

而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传

输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原

来的Java对象