对象流(ObjectInputStream,ObjectOutputStream)
概述
ObjectInputStream,ObjectOutputStream可以对基本数据类型数据和对象进行存取操作,它的强大之处在于可以将Java中的对象进行存储即序列化与反序列化
序列化:将Java对象存储到与平台无关的二进制文件或通过网络传输到另一个网络节点 使用ObjectOutputStream
反序列化:将Java对象从文件读取到内存中,使用ObjectInputStream
Java对象的存取条件
1.对象所属的类需要序列化
2.对象中的属性的类也都需要序列化
3.对象所属的类需要提供全局常量serialVersionUID序列化版本号
使用
public class ObjectInOutTest {
public static void main(String[] args) {
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
try {
//创建节点流
FileOutputStream fis = new FileOutputStream("test.dat");
//使用对象流包裹节点流,创建对象流对象
oos = new ObjectOutputStream(fis);
ois = new ObjectInputStream(new FileInputStream("test.dat"));
//对象序列化存储
oos.writeObject(new Animal("dog"));
//对象反序列化读取
Object o = ois.readObject();
Animal dog = (Animal) o;
System.out.println(dog.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
//资源关闭
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class Animal implements Serializable{
public static long serialVersionUID = 56465165L;
String name;
public Animal(String name) {
this.name = name;
}
@Override
public String toString() {
return "Animal{" +
"name='" + name + '\'' +
'}';
}
}