java 的序列化和反序列化
package com.wansha;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class MySerializable{
public static void main(String[] args) throws Exception{
Person person = new Person(20,"zhangshan","hubei,jingmen");
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("123.txt"));
oos.writeObject(person);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("123.txt"));
Person person2 = (Person)ois.readObject();
System.out.println(person2.age);
oos.close();
}
}
/**
*
*
* @author sharp
*
*该类序列化时,该 类与之关联的其它类的引用也会尝试被序列化,
*如果该引用没有实现 Serializable接口,
*将会抛出NotSerializableException异常
*
*/
class Person implements Serializable{
public int age;
private transient String name;
private static String address; //transient和static不会被序列化到文件中
public Person(int age, String name, String address) {
super();
this.age = age;
this.name = name;
this.address = address;
}
}
如果被序列化的对象实现了这两个方法,该对象就支持更细腻化的序列化
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;