- 即objectouputstream和objectinputstream的使用
ObjectOutputStream
- 将Java对象基本数据类型和图形写入OutputStream
- 读取(重构)对象
- 只能将支持java.io.Serizable接口的对象写入流中
- writeObject方法将对象写入流中
- DataOuput中的适当方法将基本数据写入流中
ObjectInputStream
-
对以前使用ObjectOuputStream写入的数据和对象进行反序列化
-
只有支持java.io.Serializable或java.io.Externalizable接口的对象才能从流中读取
-
定义一个学生类,主要用于后面的封装
package object;
import java.io.Serializable;
public class Student implements Serializable {
private static final long serialVersionUID = -187877186941003078L;
String name;
int id;
transient int age;
String department;
public Student(String name, int id,int age,String department){
this.age =age;
this.department = department;
this.id = id;
this.name = name;
}
@Override
public String toString(){
return "Student [name=" + name + ",id=" + id + ", age=" + age + ", department=" + department + " ]";
}
}
package object;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
public class Serializtion {
public static void main(String[] args) throws IOException {
Student s1 = new Student("张三", 1, 20, "数据结构");
Student s2 = new Student("李四", 2, 19, "网络");
List<Student> list = new ArrayList<Student>();
list.add(s1);
list.add(s2);
FileOutputStream fout = new FileOutputStream("student2.txt");
ObjectOutputStream out = new ObjectOutputStream(fout);
out.writeObject(list);
FileInputStream fin = new FileInputStream("student2.txt");
ObjectInputStream in = new ObjectInputStream(fin);
try {
List<Student> l = (List<Student>) in.readObject();
for (Student s : l) {
System.out.println(s);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
out.close();
in.close();
}
}
-
结果
image.png












网友评论