首页 > 代码库 > JavaI/O系统2

JavaI/O系统2

http://www.cnblogs.com/hellokitty1/p/4473952.html

数据流:

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     @Override35     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 }

JavaI/O系统2