文档详情

java io系列06之 序列化总结(Serializable 和 Externalizable)【荐】.doc

发布:2017-08-04约字共28页下载文档
文本预览下载声明
本章,我们对序列化进行深入的学习和探讨。学习内容,包括序列化的作用、用途、用法,以及对实现序列化的2种方式Serializable和Externalizable的深入研究。 序列化,就是为了保存对象的状态;而与之对应的反序列化,则可以把保存的对象状态再读出来。 简言之:序列化/反序列化,是Java提供一种专门用于的保存/恢复对象状态的机制。 一般在以下几种情况下,我们可能会用到序列化: a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候。 下面,我们先通过一则简单示例来查看序列化的用法。 源码如下(SerialTest1.java):? 1 /** 2 * 序列化的演示测试程序 3 * 4 * @author skywang 5 */ 6 7 import java.io.FileInputStream; 8 import java.io.FileOutputStream; 9 import java.io.ObjectInputStream; 10 import java.io.ObjectOutputStream; 11 import java.io.Serializable; 12 13 public class SerialTest1 { 14 private static final String TMP_FILE = .serialtest1.txt; 15 16 public static void main(String[] args) { 17 // 将“对象”通过序列化保存 18 testWrite(); 19 // 将序列化的“对象”读出来 20 testRead(); 21 } 22 23 24 /** 25 * 将Box对象通过序列化,保存到文件中 26 */ 27 private static void testWrite() { 28 try { 29 // 获取文件TMP_FILE对应的对象输出流。 30 // ObjectOutputStream中,只能写入“基本数据”或“支持序列化的对象” 31 ObjectOutputStream out = new ObjectOutputStream( 32 new FileOutputStream(TMP_FILE)); 33 // 创建Box对象,Box实现了Serializable序列化接口 34 Box box = new Box(desk, 80, 48); 35 // 将box对象写入到对象输出流out中,即相当于将对象保存到文件TMP_FILE中 36 out.writeObject(box); 37 // 打印“Box对象” 38 System.out.println(testWrite box: + box); 39 40 out.close(); 41 } catch (Exception ex) { 42 ex.printStackTrace(); 43 } 44 } 45 46 /** 47 * 从文件中读取出“序列化的Box对象” 48 */ 49 private static void testRead() { 50 try { 51 // 获取文件TMP_FILE对应的对象输入流。 52 ObjectInputStream in = new ObjectInputStream( 53 new FileInputStream(TMP_FILE)); 54 // 从对象输入流中,读取先前保存的box对象。 55 Box box = (Box) in.readObject(); 56 // 打印“Box对象” 57 Sy
显示全部
相似文档