序列化和反序化解析

先序列化, 再反序列化

序列化: 将内存中的对象, 写到硬盘 -> 输出流
反序列化: 将硬盘中的对象, 读取到内存 -> 输入流

ObjectOutputStream : 序列化, 对象输出流
`public ObjectOutputStream(OutputStream out) `

`public final void writeObject (Object obj)` : 将指定的对象写出。

ObjectInputStream : 反序列化, 对象输入流
`public ObjectInputStream(InputStream in) `

`public final Object readObject ()` : 读取一个对象。


StreamCorruptedException: invalid stream header:
原因: 没有序列化, 就直接反序列化
序列化之后对文件进行修改

所需关键字
  序列化:
   ObjectOutputStream
   FileOutputStream
   writeObject();
  反序列化
   ObjectInpuStream
   FileInputStream
   readObject();

代码案例:
  序列化:

 

 代码:

public static void main(String[] args) throws IOException {
//序列化

//创建序列化的写入内容需要的ObjectOutputStream(new FileOutputStream(路径))
ObjectOutputStream ops = new ObjectOutputStream(new FileOutputStream("AllText\\wzw.properties"));
//写入文件
ops.writeObject("序列化内容");
//提示
System.out.println("写入成功");
//关流
ops.close();

}

反序列化:

 

 代码:

public static void main(String[] args) throws IOException, ClassNotFoundException {

//反序列化
//创建读取序列化文件对象ObjectInputStream(FileInputStream(路径))
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("AllText\\wzw.properties"));
//读取
String s = (String) ois.readObject();
//查看读取内容
System.out.println(s);
//关流
ois.close();

}
 
posted @ 2020-09-10 15:48  骚哥  阅读(336)  评论(0编辑  收藏  举报