Java序列化和反序列化

对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。 

序列化一般用于以下场景: 

1.永久性保存对象,保存对象的字节序列到本地文件中; 

2.通过序列化对象在网络中传递对象; 

3.通过序列化在进程间传递对象。 

 一。编写一个可以序列化的类

public class Dog implements Serializable{
	private int size;
	private String name;

	public Dog(int size, String name) {
		super();
		this.size = size;
		this.name = name;
	}
//geter setter
}
二。编写测试类

package cn.edu.hpu.example;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializationDemo {
	public static void main(String[] args) throws IOException,
			ClassNotFoundException {
		   //序列化
		  FileOutputStream fos = new FileOutputStream("role.txt");
		  ObjectOutputStream os = new ObjectOutputStream(fos);
		  Dog d1 = new Dog(21, "lucky");
		  Dog d2 = new Dog(29, "lucky2"); 
		  Dog d3 = new Dog(19, "lucky3"); 
		  os.writeObject(d1); 
		  os.writeObject(d2);
		  os.writeObject(d3);
		  os.close();
		 
        /*
		//反序列化  字节转换成对象
		FileInputStream fis = new FileInputStream("role.txt");
		ObjectInputStream is = new ObjectInputStream(fis);
		Object o1 = is.readObject();
		Object o2 = is.readObject();
		Object o3 = is.readObject();

		Dog d1 = (Dog) o1;
		Dog d2 = (Dog) o2;
		Dog d3 = (Dog) o3;
		System.out.println(d1.getName() + "," + d1.getSize());
		System.out.println(d2.getName() + "," + d2.getSize());
		System.out.println(d3.getName() + "," + d3.getSize());
		is.close();
		*/
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章