JAVA类的序列化

作用:用于对象的持久化,将对象写到硬盘中,需要用的时候再反序列化取出来。 
所谓序列化其实就是将程序中的数据(对象)通过某种方式,保存到本地中。 
然后可以在程序关闭之后还保存程序的某个执行状态,方便在程序下次 
执行的时候通过"反序列化"读取出来,并且能够还原数据的类型,从而延续程序退出时的状态。 
一般来说,我们会使用序列化保存一些需要持久化的数据,当然如果这个数据会比较庞大的话, 
我们就直接使用数据库了!所以,序列化实际上目前很多领域用的已经不多了,大部分使用 
都已被数据库替代了! 

如何序列化和反序列化:

通过实现Serializable 接口来实现序列化

public class Person implements Serializable{ 
private String name; 
private String sex; 

public Person(String name,String sex){ 
this.name=name; 
this.sex=sex; 
} 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

public String getSex() { 
return sex; 
} 

public void setSex(String sex) { 
this.sex = sex; 
}    
} 
public class TestDemo { 

public static void main(String[] args) { 
//创建一个对象 
Person people = new Person("张三","男"); 
try { 
//实例化ObjectOutputStream对象 
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\person.txt")); 
//将对象写入文件 
oos.writeObject(people); 
oos.flush(); 
oos.close(); 

//实例化ObjectInputStream对象 
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("C:\\person.txt")); 

try { 
//读取对象people,反序列化 
Person p = (Person)ois.readObject(); 
System.out.println("姓名:"+p.getName()); 
System.out.println("性别:"+p.getSex()); 
} catch (ClassNotFoundException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 


} catch (FileNotFoundException e) { 

e.printStackTrace(); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
} 

} 

 

posted @ 2015-06-07 20:36  BBGL_Z  阅读(219)  评论(0编辑  收藏  举报