• JavaI/O系统2


    数据流:

    DataInputStream,DataOutputStream。可以用于与计算机无关的格式读写java的基本数据类型以及String对象

    对象流:

    ObjectInputStream,ObjectOutputStream.

    序列化:保存内存中对象的“全景图”。

    为了实现对象序列化,对应的类必须实现Serializable接口。

    Serializable接口中没有定义任何的方法,称之为“标记接口”。

    如果加上了一个transient修饰符,该属性的值将不被序列化。

    反序列化:使用ObjectInputStream类,将字节序列还原成对象的过程。

      1 package com.lovo.day2;
      2 
      3 import java.io.IOException;
      4 import java.io.Serializable;
      5 import java.util.Date;
      6 
      7 public class Student implements Serializable {
      8 
      9     private static final long serialVersionUID = 4282130869653374904L;
     10 
     11     private String name;
     12     private int age;
     13     private boolean sex;
     14     private double money;
     15     private Date birth;
     16     private Course course;
     17 
     18     public Student(String name, int age, boolean sex, double money, Date birth,
     19             Course course) {
     20         super();
     21         this.name = name;
     22         this.age = age;
     23         this.sex = sex;
     24         this.money = money;
     25         this.birth = birth;
     26         this.course = course;
     27     }
     28 
     29     public String getName() {
     30         return name;
     31     }
     32 
     33     public void setName(String name) {
     34         this.name = name;
     35     }
     36 
     37     public int getAge() {
     38         return age;
     39     }
     40 
     41     public void setAge(int age) {
     42         this.age = age;
     43     }
     44 
     45     public boolean isSex() {
     46         return sex;
     47     }
     48 
     49     public void setSex(boolean sex) {
     50         this.sex = sex;
     51     }
     52 
     53     public double getMoney() {
     54         return money;
     55     }
     56 
     57     public void setMoney(double money) {
     58         this.money = money;
     59     }
     60 
     61     public Date getBirth() {
     62         return birth;
     63     }
     64 
     65     public void setBirth(Date birth) {
     66         this.birth = birth;
     67     }
     68 
     69     public Course getCourse() {
     70         return course;
     71     }
     72 
     73     public void setCourse(Course course) {
     74         this.course = course;
     75     }
     76 
     77     @Override
     78     public String toString() {
     79         return "Student [name=" + name + ", age=" + age + ", sex=" + sex
     80                 + ", money=" + money + ", birth=" + birth + ", course="
     81                 + course + "]";
     82     }
     83 
     84  /*   private void readObject(java.io.ObjectInputStream in) throws IOException,
     85             ClassNotFoundException {
     86         System.out.println("读");
     87         this.name = in.readUTF();
     88         this.age = in.readInt();
     89         this.sex = in.readBoolean();
     90         this.course = (Course) in.readObject();
     91         this.money = in.readDouble();
     92     }
     93 
     94     private void writeObject(java.io.ObjectOutputStream out) throws IOException {
     95         System.out.println("写");
     96         out.writeUTF(this.name);
     97         out.writeInt(this.age);
     98         out.writeBoolean(this.sex);
     99         out.writeObject(course);
    100         out.writeDouble(this.money);
    101     }
    102   */
    103 }
     1 package com.lovo.day2;
     2 
     3 import java.io.Serializable;
     4 
     5 public class Course implements Serializable {
     6 
     7     private static final long serialVersionUID = 1L;
     8     
     9     private int code;
    10     private String name;
    11 
    12     public int getCode() {
    13         return code;
    14     }
    15 
    16     public void setCode(int code) {
    17         this.code = code;
    18     }
    19 
    20     public String getName() {
    21         return name;
    22     }
    23 
    24     public void setName(String name) {
    25         this.name = name;
    26     }
    27 
    28     public Course(int code, String name) {
    29         super();
    30         this.code = code;
    31         this.name = name;
    32     }
    33 
    34     @Override
    35     public String toString() {
    36         return "Course [code=" + code + ", name=" + name + "]";
    37     }
    38 }
     1 package com.lovo.day2;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.FileNotFoundException;
     5 import java.io.FileOutputStream;
     6 import java.io.IOException;
     7 import java.io.ObjectInputStream;
     8 import java.io.ObjectOutputStream;
     9 import java.util.Date;
    10 
    11 public class ObjectTest {
    12 
    13     public static void main(String[] args) {
    14         Student stu = new Student("张飞", 18, true, 10.0, new Date(), new Course(
    15                 1, "语文"));
    16         Student stu2 = new Student("张飞2", 18, true, 10.0, new Date(), new Course(
    17                 2, "数学"));
    18 
    19         // 序列化
    20         ObjectOutputStream out = null;
    21 
    22         try {
    23             out = new ObjectOutputStream(
    24                     new FileOutputStream("d:\student.bin"));
    25             out.writeObject(stu);
    26             out.writeObject(stu2);
    27         } catch (FileNotFoundException e) {
    28             e.printStackTrace();
    29         } catch (IOException e) {
    30             e.printStackTrace();
    31         } finally {
    32             if (out != null) {
    33                 try {
    34                     out.close();
    35                 } catch (IOException e) {
    36                     e.printStackTrace();
    37                 }
    38             }
    39         }
    40 
    41         // 反序列化
    42         ObjectInputStream in = null;
    43 
    44         try {
    45             in = new ObjectInputStream(new FileInputStream("d:\student.bin"));
    46             Student stu1 = (Student) in.readObject();
    47             System.out.println(stu1);
    48 
    49             System.out.println("*****************");
    50 
    51             System.out.println(stu1.getCourse());
    52             
    53             System.out.println("#######################################");
    54             
    55             Student stu21 = (Student) in.readObject();
    56             System.out.println(stu21);
    57             
    58             System.out.println("*****************");
    59             
    60             System.out.println(stu21.getCourse());
    61         } catch (FileNotFoundException e) {
    62             e.printStackTrace();
    63         } catch (IOException e) {
    64             e.printStackTrace();
    65         } catch (ClassNotFoundException e) {
    66             e.printStackTrace();
    67         } finally {
    68             if (in != null) {
    69                 try {
    70                     in.close();
    71                 } catch (IOException e) {
    72                     e.printStackTrace();
    73                 }
    74             }
    75         }
    76     }
    77 }
  • 相关阅读:
    solr6.5搭建以及使用经验
    Intellij IDEA svn的使用记录
    初次从eclipse转到intellij idea上的一些经验
    Linux一键安装PHP/JAVA环境OneinStack
    CentOS下yum安装mysql,jdk以及tomcat
    centos yum换阿里云源
    ehcache配置:使用Spring+SpringMVC+Mybatis或者有shiro
    微博短链接的生成算法(Java版本)
    手把手教你使用Git
    工作中有关分布式缓存的使用和需要注意的问题梳理
  • 原文地址:https://www.cnblogs.com/hellokitty1/p/4473952.html
Copyright © 2020-2023  润新知