通常用于读写引用类型数据。更多的应用场景是在网络环境下,比如在一台机器上将对象序列化后,通过网络传输到另一台机器上,再经过反序列化就可以使用了。
我们可以这么理解,文件IO处理的是本地磁盘文件,网络IO则处理是的远程服务器或者网络中其他机器上的磁盘文件。
ObjectInputStream。
ObjectOutputStream。
Student类实现Serializable接口
import java.io.Serializable;
public class Student implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private int age;
public Student() { }
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
测试类:
import java.io.*;
import java.util.*;
public class StudentObjectTest {
public static void main(String[] args) {
try {
test();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void test() throws Exception
{
List<Student> list = new ArrayList<Student>();
list.add(new Student(01,"小梁",16));
list.add(new Student(02,"小张",11));
list.add(new Student(03,"小赵",15));
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:/student.dat"));
oos.writeObject(list);
oos.close();
System.out.println("向文件中序列化成功!");
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:/student.dat"));
Object obj = ois.readObject();
ois.close();
if(obj instanceof List)
{
List<Object> oList = (List)obj;
for(Object o:oList)
{
if(o instanceof Student)
{
Student s = (Student)o;
System.out.println(s);
}
}
}
}
}