对象的序列化:把一个Object对象直接转化为字节流,然后把它写入到硬盘上的一个二进制文件或者通过网络传输,同样的,我们可以把这个二进制文件读入到内存,然后用来初始化一个对象,需要序列化得类对象,需要实现Serializable接口(空接口,与instance of连用,起到标志作用),不需要序列化得属性可以用transient修饰。
Class:
ObjectOutputStream
ObjectInputStream
常用方法:
readObject
writeObject
其实很容易想到这样一个问题,就是序列化得对象中有一个指针指向另一个对象时的操作,我们应当把指针指向的对象也一起序列化。另外在读取之后重组对象时,引用的内容也应该做同步的修改.
在C++的笔记中做了一个简单的实现程序,可以参考一下
一个基本的示例代码
class Student implements Serializable{
public String name;
transient public float score;
public Student(String name,float score) {
this.name = name;
this.score = score;
}
}
public class TestIO {
public static void main(String[] args) {
Student ss = new Student("liha", 95.5f);
File file = new File("D:\\object.dat");
try {
ObjectOutputStream objOut = new ObjectOutputStream(new FileOutputStream(file));
objOut.writeObject(ss);
ObjectInputStream objIn = new ObjectInputStream(new FileInputStream(file));
Student sbackStudent = (Student)objIn.readObject();
System.out.println(sbackStudent.name);
System.out.println(sbackStudent.score);
objOut.close();
objIn.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
转载于:https://blog.51cto.com/6621180/1922798