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;