package File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.io.IOException;
public class SerializeTest {
public static void main(String[] args) {
try (ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("transient.txt"));
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("transient.txt"))) {
Person per = new Person("孙悟空", 500);
oos.writeObject(per);
Person p = (Person) ois.readObject();
System.out.println(p.getName());//输出空悟孙
System.out.println(p.getAge());//输出501
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person implements Serializable { //序列化的类必须实现Serializable或Externalizable接口
private String name;
private transient int age;//transient表示不进行不序列化
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
/*进行自定义序列化,要在序列化的类中添加两个方法,都是private,这里用到了反射*/
private void writeObject(ObjectOutputStream out)throws IOException
{
out.writeObject(new StringBuffer(name).reverse());
out.writeInt(age);
}
private void readObject(ObjectInputStream in)throws IOException, ClassNotFoundException
{
this.name = ((StringBuffer)in.readObject()).toString();
this.age = in.readInt()+1;
}
}