1.概念

  序列化:把Java对象转换为字节序列的过程。
  反序列化:把字节序列恢复为Java对象的过程。

2.用途

  对象的序列化主要有两种用途:
  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
  2) 在网络上传送对象的字节序列。

3.对象序列化

3.1序列化API

  java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。只有实现了Serializable和Externalizable接口的类的对象才能被序列化。

  java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。

3.2代码示例

import java.io.*;
import java.util.Date; public class ObjectSaver {
public static void main(String[] args) throws Exception {
/*其中的 D:\\objectFile.obj 表示存放序列化对象的文件*/ //序列化对象
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:\\objectFile.obj"));
Customer customer = new Customer("王麻子", 24);
out.writeObject("你好!"); //写入字面值常量
out.writeObject(new Date()); //写入匿名Date对象
out.writeObject(customer); //写入customer对象
out.close(); //反序列化对象
ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:\\objectFile.obj"));
System.out.println("obj1 " + (String) in.readObject()); //读取字面值常量
System.out.println("obj2 " + (Date) in.readObject()); //读取匿名Date对象
Customer obj3 = (Customer) in.readObject(); //读取customer对象
System.out.println("obj3 " + obj3);
in.close();
}
} class Customer implements Serializable {
private String name;
private int age;
public Customer(String name, int age) {
this.name = name;
this.age = age;
} public String toString() {
return "name=" + name + ", age=" + age;
}
}

最新文章

  1. 关于awk的逗号问题
  2. js中各种跨域问题实战小结(一)
  3. 10条现代EQ技术基础贴士(转)
  4. 从lighttpd学到的代码技巧
  5. Struts2 技术全总结 (正在更新)
  6. spring security 跨域防伪攻击
  7. Swift 拷贝文件夹,实现文件夹内容整体复制
  8. phpcms列表页替换
  9. 你可能不知道的51个Linux经典命令
  10. <Parquet><Physical Properties><Best practice><With impala>
  11. 解决mysql安装出现error Nr.1045问题
  12. 用C写有面向对象特点的程序
  13. MHA之Binlog Dump (GTID)僵尸进程清理
  14. Servlet Request 请求转发
  15. Golang学习-第二篇 搭建一个简单的Go Web服务器
  16. 76. Minimum Window Substring (String, Map)
  17. UbuntuServer 16.04 with LNMP搭建WordPress
  18. 用C语言指针作为函数返回值
  19. 运行hadoop自带的wordcount例子程序
  20. 关于Intellij IDEA导入jdk出现异常

热门文章

  1. 在ubuntu14.04上部署基于Docker的Gitlab
  2. 8421BCD码转换为十进制
  3. 升级react 15.4,常见的错误及解决方案
  4. MyBatis Generator 详解 【转来纯为备忘】
  5. WinForm程序关闭窗体后杀死进程
  6. QT 第三方串口库COM10以上无法读取问题
  7. python学习粘贴
  8. col-md-*,col-xs-*
  9. C#学习之Stream
  10. ant常用命令