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