IO流之对象流
-
序列化:将内存中的java对象保存到磁盘中或通过网络传输出去
-
反序列化:将磁盘文件中的对象还原为内存中的一个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();
}
}
}
}
p613
自定义类实现序列化
Person类需要满足如下要求,方可序列化
- 需要实现接口:Serializable
- 当前类提供一个全局常量:public static final long serialVersionUID = 456789L;
- 当前类的所有属性也必须满足时可序列化的。(默认情况下,基本数据类型是可序列化的)
- ObjectInputStream和ObjectOutputStream不能序列化static和transient修饰的成员变量。
序列化机制(重要)
对象序列化机制允许 把内存中的Java对象转换成平台无关的二进制流,从
而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传
输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原
来的Java对象