Java序列化和反序列化

本文详细介绍了Java中的序列化和反序列化过程,包括如何创建可序列化的对象、通过`ObjectOutputStream`将对象转换为字节流并存储,以及使用`ObjectInputStream`从文件中读取并反序列化对象。
摘要由CSDN通过智能技术生成

序列化 & 反序列化

        --->>>序列化是将对象转化为字节流的过程,(将创建的对象,转化为字节流,存储到硬盘中);那么反序列化就是将磁盘中的字节数据,读取到成对象输出

        --->>>Java序列化通过实现 Serializable 来实现

①:首先创建一个可以被序列化的一个对象
import java.io.Serializable;

public class Employee implements Serializable{

	/*
	 * java 序列化:将对象转为字符流
	 */
	private static final long serialVersionUID = 42L;
	
	public String name;
	public int age;
	public String address;
	public double salary;
	public  int SSN;
	
	public void Check() {
		System.out.println(
				"My Name is:"+name+"\n"
				+"This year I'm "+age+" old"+"\n"
				+"and salary is:"+salary+"\n"
				+"please call me:"+SSN+"\n"
				+"and postTO:"+address);
	}
	
}
②:然后通过序列化,把创建的对象序列化成字节流存储到硬盘文件中去
import java.io.IOException;
import java.io.*;

public class MySerialize {

	
	/**
	 * java 序列化对象
	 * @param args
	 */
	public static void main(String[] args) {
		Employee e = new Employee();
		e.name = "Mack Li";
		e.salary = 100150.99;
		e.age = 31;
		e.address = "10500 N De Anza Blvd, Cupertino, CA San Francisco,USA.;";
		e.SSN = 9961010;
		
		try {										     //字节流文件名(路径)
			FileOutputStream fis = new FileOutputStream("employee.ser");
			ObjectOutputStream os = new ObjectOutputStream(fis);
			os.writeObject(e);
			os.close();
			fis.close();
			System.out.println("Serialize is complete in 'employee.ser'");
			
		}catch(IOException ex) {
			ex.printStackTrace();
		}
		
	}



}

③:最后反序列化,读取之前写入的字节流文件
import java.io.*;

public class MyReSerialize {

	/**
	 * java --->>反序列化
	 * @param args
	 * @throws ClassNotFoundException 
	 */
	public static void main(String[] args){
		Employee e = null;
		
		try {
			FileInputStream fis = new FileInputStream("employee.ser");
			ObjectInputStream ins = new ObjectInputStream(fis);
			e = (Employee) ins.readObject();
			ins.close();
			fis.close();
		}catch(IOException ex) {
			ex.printStackTrace();
			return;
		}catch(ClassNotFoundException nof) {
			nof.printStackTrace();
			return;
		}
		
		System.out.println("Deserialized Employee..."+"\n");
		e.Check();
		
/*		 
	     System.out.println("Name: " + e.name);
	     System.out.println("Address: " + e.address);
	     System.out.println("SSN: " + e.SSN);
	     System.out.println("Salary: " + e.salary);
*/		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值