序列化:把Java对象转换为字节序列的过程
反序列化:把字节序列恢复为Java对象的过程
注意:参与序列化和反序列化的类必须实现Serializable接口,该接口没有方法,但是默认会生成一个序列化版本号
其中包含序列化对象的方法:writeObject()
包含反序列化对象的方法:readObject()
应用示例:
序列化操作
创建一个实体类并实现Serializable该接口
public class Goods implements Serializable {
private String goodsId;
private String goodsName;
private double price;
}
创建是实体类对象并序列化操作
public static void main(String[] args) throws Exception{
//创建实体来对象
Goods goods=new Goods("gd001","电脑",888);
FileOutputStream fos=new FileOutputStream("./document/imooc.txt");
ObjectOutputStream outputStream=new ObjectOutputStream(fos);
//把对象写到文件
outputStream.writeObject(goods);
//刷新缓冲流
outputStream.flush();
//关闭流
outputStream.close();
fos.close();
}
序列化后文件的内容会显示乱码,不影响反序列化读取文件内容,因为对象输出流写到文件中的数据并不是文件中本身的文本数据,二十对象序列化后的数据,所以乱码是正常的
反序列化操作
public static void main(String[] args) throws Exception{
FileInputStream fis=new FileInputStream("./document/imooc.txt");
ObjectInputStream objectInputStream=new ObjectInputStream(fis);
//读取文件
Object object=objectInputStream.readObject();
//强制转换为Goods商品类对象
Goods goods1= (Goods) object;
System.out.println(goods1);
fis.close();
objectInputStream.close();
}
此时在控制台会看到反序列化输出的内容,即为我们序列化的内容
流的关闭顺序:
建议在关闭流时,先打开的后关闭,后打开的先关闭
喜欢文章的话就点个关注或收藏一下吧