zoukankan      html  css  js  c++  java
  • Java的序列化和反序列化

    Java序列化和反序列化的简单实现,新建一个Java类实现Serializable接口,再定义一个标识来区别对象。

     1 import java.io.Serializable;
     2 
     3 public class Student implements Serializable {
     4 
     5     /**
     6      * serialVersionUID
     7      * 用来验证对象的唯一性
     8      */
     9     private static final long serialVersionUID = 1L;
    10     
    11     private String id;
    12     private String name;
    13     private char sex;
    14     private int age;
    15 
    16     public String getId() {
    17         return id;
    18     }
    19 
    20     public void setId(String id) {
    21         this.id = id;
    22     }
    23 
    24     public String getName() {
    25         return name;
    26     }
    27 
    28     public void setName(String name) {
    29         this.name = name;
    30     }
    31 
    32     public char getSex() {
    33         return sex;
    34     }
    35 
    36     public void setSex(char sex) {
    37         this.sex = sex;
    38     }
    39 
    40     public int getAge() {
    41         return age;
    42     }
    43 
    44     public void setAge(int age) {
    45         this.age = age;
    46     }
    47 
    48     public Student(String id, String name, char sex, int age) {
    49         this.id = id;
    50         this.name = name;
    51         this.sex = sex;
    52         this.age = age;
    53     }
    54 
    55     public Student() {
    56     }
    57 
    58     @Override
    59     public String toString() {
    60         return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
    61     }
    62     

    再通过ObjectOutputStream来把对象序列化,然后再通过ObjectInputStream来反序列化,多次写入记得flush下。

     1 Student st1 = new Student("1", "小明", '男', 15);
     2         Student st2 = new Student("2", "小华", '男', 20);
     3         try {
     4             ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("student.txt"),true));
     5             oos.writeObject(st1);
     6             oos.flush();
     7             oos.writeObject(st2);
     8             oos.writeObject(null);//因为写入多个对象写一个null作为结束符方便循环读取。
     9             oos.close();
    10         } catch (IOException e) {
    11             e.printStackTrace();
    12         }
    13 
    14         try {
    15             Student st;
    16             ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("student.txt")));
    17             while ((st = (Student) ois.readObject()) != null) {
    18                 System.out.println(st.toString());
    19             }
    20             ois.close();
    21         } catch (IOException e) {
    22             e.printStackTrace();
    23         } catch (ClassNotFoundException e) {
    24             e.printStackTrace();
    25         }
  • 相关阅读:
    database使用
    画图工具
    宝塔面板权限不足问题解决
    nginx查看并发数量
    台式机未插入扬声器或者耳机
    键盘出现乱码解决
    lnmp宝塔面板问题
    nginx+mysql双主搭建
    zabbix客户端安装
    java生产条形码
  • 原文地址:https://www.cnblogs.com/lingdu9527/p/11006114.html
Copyright © 2011-2022 走看看