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