1.什么是对象序列化呢?
就是讲一个对象转化二进制进行传输,或者是保存在文本当中,实现serializable接口。用到的类ObjectOutputStream。具体的方法如下:
java.lang.Object
–继承者 java.io.OutputStream
----继承者 java.io.ObjectOutputStream
public final void writeObject(Object obj)
将指定的对象写入 ObjectOutputStream。对象的类、类的签名,以及类及其所有超类型的非瞬态和非静态字段的值都将被写入。可以使用 writeObject 和 readObject 方法重写类的默认序列化。由此对象引用的对象是以可变迁的方式写入的,这样,可以通过 ObjectInputStream 重新构造这些对象的完全等价的图形。
2.什么是反序列化呢?
和序列化正好相反,就是将一个二进制的文件以对象的形式读取。用到的类是:ObjectInputStreamReader,方法如下:
public final void readObject()
结构图:
(1)对象的序列化:
(2)对象的反序列化:
这里应该是readerObject()方法
3.实例:
package IO操作;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
@SuppressWarnings("serial")
//对象的序列化:就是将对象转化二进制进行传输,或者以文本的形式保存下来。要想实现序列化,必须实现serializable接口
class Person implements Serializable{
private String name;
private int age ;
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", getClass()="
+ getClass() + ", hashCode()=" + hashCode() + ", toString()="
+ super.toString() + "]";
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
public class 对象序列化 {
public static final File FILE = new File("h:"+File.separator+"info.bin");
public static void main(String[] args) throws Exception {
//des();
red();
}
public static void des() throws Exception{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE));
oos.writeObject(new Person("nia", 12));
oos.close();
}
public static void red() throws Exception{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE));
Object readObject = ois.readObject();
System.out.println(readObject);
ois.close();
}
}