码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础之序列化与反序列化

时间:2018-03-25 23:01:03      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:obj   基础   转化   port   system   一个   nts   blog   返回   

序列化和反序列化:

  把对象转化为字节序列的过程称为序列化;

  把字节序列恢复为对象的过程称为对象的反序列化;

方法:

  Java.io.ObjectOutputStream代表对象的输出流,writeObject(Object obj)方法对参数对象进行序列化,把得到的字节序列写到一个目标输出流中。

  Java.io.ObjectInputStream代表对象的输入流,readObject()方法可以从一个源输入流中读取字节序列,并转化为一个对象,将其返回。

  只有实现Serializable和Externalizable接口的类的对象才能被序列化。

  Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。
  对象序列化包括如下步骤:
  1) 创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;
  2) 通过对象输出流的writeObject()方法写对象。
  对象反序列化的步骤如下:
  1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;
  2) 通过对象输入流的readObject()方法读取对象。

实例:

 1 import java.io.File;
 2 import java.io.FileInputStream;
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 import java.io.ObjectInputStream;
 7 import java.io.ObjectOutputStream;
 8 import java.io.Serializable;
 9 import java.text.MessageFormat;
10 
11 
12 class Person implements Serializable{
13     private int age;
14     public int getAge() {
15         return age;
16     }
17     public void setAge(int age) {
18         this.age = age;
19     }
20     public String getName() {
21         return name;
22     }
23     public void setName(String name) {
24         this.name = name;
25     }
26     private String name;
27 }
28 public class test {
29     public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException
30     {
31         SerialiablePerson();
32         Person p=DeserializePerson();
33          System.out.println(MessageFormat.format("name={0},age={1}",p.getName(),p.getAge()));    
34     }
      //反序列化的过程,从字节序列文件读出并返回
35 public static Person DeserializePerson() throws FileNotFoundException, IOException, ClassNotFoundException{ 36 ObjectInputStream in=new ObjectInputStream(new FileInputStream(new File("E://person.txt"))); 37 Person p=(Person)in.readObject(); 38 return p; 39 }
     //序列化的过程,将字节存到E://Person.txt中
40 public static void SerialiablePerson() throws FileNotFoundException, IOException { 41 Person p=new Person(); 42 p.setAge(15); 43 p.setName("姓氏"); 44 45 ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(new File("E://Person.txt"))); 46 out.writeObject(p); 47 out.close(); 48 } 49 50 }

 

JAVA基础之序列化与反序列化

标签:obj   基础   转化   port   system   一个   nts   blog   返回   

原文地址:https://www.cnblogs.com/fxh1314/p/8647405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!