所谓的对象序列化就是指讲一个在内存中保存的对象变成一个二进制的数据流进行传输,但并不是所有类的对象都可以进行序列化的操作,如果一个对象需要序列化,则对象所在的类必须实现Serializable借口。但是此接口中没有任何的方法定义,所以此接口和Cloneable接口是完全一样的,都是作为标识接口出现。
package com.sotaof.io;
import java.io.*;
public class ObjectInputStreamDemo {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D:" + File.separator + "text.txt")));
Object obj = ois.readObject();
ois.close();
if(obj instanceof Person){
Person per = (Person) obj;
System.out.println(per);
}
}
}
对象序列化:
package com.sotaof.io;
import java.io.*;
/**
* @Title: ObjectOutputStreamDemo.java
* @Package com.sotaof.io
* @Description: TODO
* @author sotaof
* @date 2012-7-20 下午12:25:08
* @version V1.0
*/
public class ObjectOutputStreamDemo {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
Person per = new Person("张三", 30);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("D:" + File.separator + "text.txt")));
oos.writeObject(per);
oos.close();
}
}
反序列化:
package com.sotaof.io;
import java.io.*;
/**
* @Title: ObjectInputStreamDemo.java
* @Package com.sotaof.io
* @Description: TODO
* @author sotaof
* @date 2012-7-20 下午12:27:16
* @version V1.0
*/
public class ObjectInputStreamDemo {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D:" + File.separator + "text.txt")));
Object obj = ois.readObject();
ois.close();
if(obj instanceof Person){
Person per = (Person) obj;
System.out.println(per);
}
}
}