欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java序列化和反序列化例子,java序列化例子,序列化简单说就是为了保存

来源: javaer 分享于  点击 47564 次 点评:97

java序列化和反序列化例子,java序列化例子,序列化简单说就是为了保存


序列化简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。

反序列化正好相反,就是将保存的对象读出来,实例为对象。

下面是一个完整而形象的例子:

package cn.outofmemory.snippet;  /**  * 对象序列化与反序列化  *  */  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;  /* 需要持久化的类  * 要想使类支持对象序列化,只需要实现Serializable接口  */  class Person implements Serializable {      private static final long serialVersionUID = 3456126674259028540L;      /* 属性 */      private String id;      private String password;      private String name;      private int age;      // 如果不想对某些属性进行序列化,则需加上transient修饰符      private transient String sex;      /* setter和getter方法 */      public String getId() {          return id;      }      public void setId(String id) {          this.id = id;      }      public String getPassword() {          return password;      }      public void setPassword(String password) {          this.password = password;      }      public String getName() {          return name;      }      public void setName(String name) {          this.name = name;      }      public int getAge() {          return age;      }      public void setAge(int age) {          this.age = age;      }      public String getSex() {          return sex;      }      public void setSex(String sex) {          this.sex = sex;      }      /* 覆盖toString方法 */      public String toString() {          return "对象信息:" + id + " " + password + " " + name + " " + age + " "                  + sex;      }  }  /*  * 实现了对象序列化和反序列化的类  */  public class SeriObject {      /**      * 序列化      *       * @param person      *            对象名      * @param file      *            指定文件      */      public void writePerson(Person person, String file) {          try {              // 对象输出流,指向指定文件              ObjectOutputStream out = new ObjectOutputStream(                      new FileOutputStream(file));              out.writeObject(person);// 将对象写入文件              out.flush();// 清空              out.close();// 关闭          } catch (FileNotFoundException e) {              e.printStackTrace();          } catch (IOException e) {              e.printStackTrace();          }      }      /**      * 反序列化      *       * @param file      *            指定文件      */      public void readPerson(String file) {          try {              // 对象输入流,来源于指定文件              ObjectInputStream in = new ObjectInputStream(new FileInputStream(                      file));              Object o = in.readObject();// 将对象从文件读出              in.close();// 关闭              if (o != null) {                  if (o instanceof Person)                      System.out.println(o.toString());              }          } catch (FileNotFoundException e) {              e.printStackTrace();          } catch (IOException e) {              e.printStackTrace();          } catch (ClassNotFoundException e) {              e.printStackTrace();          }      }      public static void main(String[] args) {          /*          * 测试代码          */          Person person = new Person();          person.setId("aaa");          person.setPassword("bbb");          person.setName("张三");          person.setAge(20);          person.setSex("男");          SeriObject so = new SeriObject();          so.writePerson(person, "person.txt");          so.readPerson("person.txt");      }  }  
相关栏目:

用户点评