现在的位置: 首页 > 综合 > 正文

java 的序列化和反序列化

2017年12月25日 ⁄ 综合 ⁄ 共 1120字 ⁄ 字号 评论关闭

java 的序列化和反序列化

package com.wansha;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;


public class MySerializable{
	public static void main(String[] args) throws Exception{
		Person person = new Person(20,"zhangshan","hubei,jingmen");
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("123.txt"));
		oos.writeObject(person);
		oos.close();
		
		
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("123.txt"));
		Person person2 = (Person)ois.readObject();
		System.out.println(person2.age);
		oos.close();
		
	}
}

/**
 * 
 * 
 * @author sharp
 *
 *该类序列化时,该 类与之关联的其它类的引用也会尝试被序列化,
 *如果该引用没有实现 Serializable接口,
 *将会抛出NotSerializableException异常
 *
 */
class Person implements Serializable{
	
	public int age;
	private transient String name;        
	private static String address;        //transient和static不会被序列化到文件中
	
	public Person(int age, String name, String address) {
		super();
		this.age = age;
		this.name = name;
		this.address = address;
	}
}

如果被序列化的对象实现了这两个方法,该对象就支持更细腻化的序列化

 private void writeObject(java.io.ObjectOutputStream out)
     throws IOException
 private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException;

抱歉!评论已关闭.