Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

                                          作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

 

一.对象的序列化与反序列化

   ObjectOutputStream流用于将对象保存在磁盘中,或者通过网络传输到另一台主机上。保存在文件中的对象的二进制流可以用ObjectInputStream流在以后被还原成原来的对象。

  对象输出流的对象可以永久的保存在磁盘上,使对象可以脱离程序而存在,此过程也称为“序列化”过程,反之,将磁盘的数据加载到内存中的就称为“反序列化”过程。换句话说,对象中的数据以流的形式写入到文件中保存的过程称为写出对象,也叫对象的序列化,在文件中以流的形式将对象读取出来,读取对象的过程也叫反序列化。

  Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

  注意:反序列化是不走构造方法的哟!

 

 

二.ObjectOutputStream流写对象

  类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。

Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

  接下来我们定义一个实现Serializable类接口如下:

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 
 7 package cn.org.yinzhengjie.note6;
 8 
 9 import java.io.Serializable;
10 
11 public class Person implements Serializable{
12     private String Name;
13     private int Age;
14     public Person(String name, int age) {
15         super();
16         Name = name;
17         Age = age;
18     }
19     
20     public String getName() {
21         return Name;
22     }
23     
24     public void setName(String name) {
25         Name = name;
26     }
27     
28     public int getAge() {
29         return Age;
30     }
31     
32     public void setAge(int age) {
33         Age = age;
34     }
35     
36     @Override
37     public String toString() {
38         return "Person [姓名=" + Name + ",年龄=" + Age+ "]";
39     }
40 }
Person.java 文件内容

相关文章: