【IO流】序列化与反序列化

转载 2018年04月17日 18:58:27

序列化与反序列化

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

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

序列化的必要性

Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生。

如何序列化一个对象

一个对象能够序列化的前提是实现Serializable接口,Serializable接口没有方法,更像是个标记。有了这个标记的Class就能被序列化机制处理。

ObjectOutputStream Object输出成Byte流,保存在文件中

ObjectInputStream 从持久的文件中读取Bytes重建对象

下面举个小栗子;

将实现Serializable接口的Person类,序列化写入文件,反序列化从文件读取出来。

public class Person implements Serializable{
     private static final long serialVersionUID= 4603642343377807741L; //不加序列号将会出现警告
	 private int age;
	 private String name;
	 private String id;
	 
	 
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	 
	
}
public class TestObjSerializeAndDeserialize {
 
	
	//将对象序列化
	 private static void serializePerson() throws FileNotFoundException, IOException {
      Person person=new Person();
      person.setName("张三");
      person.setAge(18);
      ObjectOutputStream oo=new ObjectOutputStream(new FileOutputStream(new File("D:/Person.txt")));
      oo.writeObject(person);
      System.out.println("序列化对象成功");
      oo.close();
	}
	//将对象反序列化
	 private static Person DeserializePerson() throws FileNotFoundException, IOException, ClassNotFoundException {
       ObjectInputStream ois=new ObjectInputStream(new FileInputStream(new File("D:/Person.txt")));
	   Person person=(Person)ois.readObject();
	   System.out.println("Person对象反序列化成功");
	   return person;
	 }
	 
	 public static void main(String[] args) throws Exception {
		 serializePerson();//序列化Person
		 Person p=DeserializePerson();//反序列化Person
		 System.out.println(MessageFormat.format("name={0},age={1}", p.getName(),p.getAge()));
		 
	}
	 
}



参考自:http://developer.51cto.com/art/200908/147650.htm

IO流序列化和反序列化

  • 2013年06月19日 23:55
  • 1016B
  • 下载

Java的IO流与对象的序列化浅谈

今天再次回顾了一些关于java IO流的知识。虽然以前会点IO的方面的编程,但是还是知其然不知其所以然。 首先上一张IO流的主要家族图吧。           该图给出了IO流的具...
  • LULEI1217
  • LULEI1217
  • 2016-01-16 13:54:38
  • 2238

IO流_序列化流和反序列化流的概述和使用

package cn.itcast_07; import java.io.FileInputStream; import java.io.FileOutputStream; import java....
  • L1585931143
  • L1585931143
  • 2017-03-02 19:54:09
  • 209

I/O流(三)—对象的序列化和反序列化

一、序列化和反序列化的概念   把对象转换为字节序列的过程称为对象的序列化。    把字节序列恢复为对象的过程称为对象的反序列化。      对象的序列化主要有两种用途:   1) ...
  • lmb55
  • lmb55
  • 2015-05-26 19:20:02
  • 1086

对象的序列化与反序列化---IO学习笔记(四)

对象的序列化,反序列化 对象的序列化: 就是将Object转换成byte序列 对象的反序列化: 将byte序列转换成Object序列化流,反序列化流 序列化流(ObjectOutputStr...
  • u013991521
  • u013991521
  • 2015-08-13 11:36:51
  • 1002

java序列化和反序列化使用总结

java序列化和反序列化使用总结 一、概念        java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象。对象序列化是对象持久化的一种实现方法,它是将对象...
  • lj188266
  • lj188266
  • 2015-08-05 13:42:32
  • 3023

IO —— 对象序列化与反序列化

导读:以前,我们的对象都是存在内存里面的,对象序列化是这样一种技术,将对象保存在一个介质中(这个过程可以理解为持久化),也可以适用于网络传输,使得在 Java 虚拟机退出以后还可以访问这个介质,通过相...
  • lw_power
  • lw_power
  • 2016-07-24 08:51:02
  • 626

c#对象序列化和反序列化,压缩流

  • 2013年03月17日 14:16
  • 57KB
  • 下载

python的io 与java的io流的使用及对象的序列化

io的使用 采用流技术: 字节 inputStream/outputStream 字符 reader/writer 首先介绍的是java的io的使用方法 在下面的案例中d:/demo这些是你本地的路...
  • huangweicheng123
  • huangweicheng123
  • 2017-10-08 10:51:23
  • 322

序列化和反序列化时的注意点

如果一个对象不止一次写入对象流,并不会存储对象的多个副本。第一次写入一个对象时,就会为它创建一个序列号。Java虚拟机将对象的所有内容和序列号一起写入对象流。如果再写入相同对象(注意:这里的相同指的是...
  • yk0602
  • yk0602
  • 2015-08-27 08:41:54
  • 463
收藏助手
不良信息举报
您举报文章:【IO流】序列化与反序列化
举报原因:
原因补充:

(最多只允许输入30个字)