Java序列化与反序列化(Serializable)
特别注意:
1.要序列化的类必须实现Serializable借口
2.在反序列化(读取对象)的时候必须额外捕获EOFException
3.序列化之后的文件是“乱码”
package com.frank.io;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* author:pengyan
* date:Jun 15, 2011
* file:ObjectInputOutputStreamTest.java
*/
public class ObjectInputOutputStreamTest {
String path="E:\\planda.p";
public static void main(String[] args) throws Exception {
ObjectInputOutputStreamTest test=new ObjectInputOutputStreamTest();
test.outputObject();
test.inputObject();
}
private void inputObject() throws Exception {
//create inputObjectStream
ObjectInputStream ois=new ObjectInputStream(new FileInputStream(path));
// temp object to receive the value of this stream read everytime
Object obj=null;
PandaEntity p=null;
try {
while((obj=ois.readObject())!=null){
p=(PandaEntity)obj;
//show the object read by the stream
System.out.println(p.toString());
}
} catch (EOFException e) {
//throw EOFException when read end
System.err.println("读取完毕");
}
}
private void outputObject() throws Exception{
//create two object to output
PandaEntity p1=new PandaEntity(1000,"团团",3);
PandaEntity p2=new PandaEntity(2000,"圆圆",3);
//create the output stream
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(path));
//write object
oos.writeObject(p1);
oos.writeObject(p2);
//flush the stream
oos.flush();
//close the stream
oos.close();
}
}
class PandaEntity implements Serializable{
/*the class must implements Serializable interface
* or there will throw java.io.NotSerializableException
* */
private Integer id;
private String name;
private Integer age;
@Override
public String toString() {
return "id:"+id+"\tname:"+name+"\tage:"+age;
}
public PandaEntity() {
}
public PandaEntity(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}