好记性不如赖笔头……
为何要实现Serializable接口:Serializable接口是启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。
序列化:将class文件及内容通过流写入到文件中(也称为持久化),
反序列化:读取文件内容转为指定的class类并填充其读取到的内容
--------------------------------------------------------------------------实体类--------------------------------------------------------------------------
package com.Ckinghan.objectStream;
import java.io.Serializable;
public class Persion implements Serializable{
/**
* 序列化ID
*/
private static final long serialVersionUID = 4914051092502785039L;
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public void name() {
}
@Override
public String toString() {
return "Persion [name=" + name + ", age=" + age + "]";
}
}
--------------------------------------------------------------------------序列化与反序列化--------------------------------------------------------------------------
package com.Ckinghan.objectStream;
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 ObjectStreamDemo {
public static void main(String[] args) {
/**
* 序列化(持久化,也就是保存class及数据到文件)对象
*/
objectOutputStream();
/**
* 反序列化文件(读取文件转换为class类并填充数据)
*/
objectInputStream();
}
/**
* @描述:反序列化文件(读取文件转换为class类并填充数据)
* @创建时间:
*/
public static void objectInputStream(){
//创建流
ObjectInputStream objectInputStream = null;
try {
//实例化对象
objectInputStream = new ObjectInputStream(new FileInputStream("persion.txt"));
/**
* 反序列化,读取文件数据将其转换为指定的class类并填充数据
*/
Persion persion = (Persion)objectInputStream.readObject();
//输出
System.out.println(persion);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
//关闭流
if(objectInputStream != null){
try {
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* @描述:序列化(持久化)对象
* @创建时间:
*/
public static void objectOutputStream(){
//创建对象
ObjectOutputStream objectOutputStream = null;
try {
//实例化对象
objectOutputStream = new ObjectOutputStream(new FileOutputStream("persion.txt"));
//创建实体类并填充数据
Persion persion = new Persion();
persion.setAge(20);
persion.setName("小明");
//序列化开始
objectOutputStream.writeObject(persion);
//提示
System.out.println("序列化Persion成功");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
if(objectOutputStream != null){
try {
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
*******************执行结果:
序列化Persion成功
Persion [name=小明, age=20]