0x01 简述
Java 序列化是指把 Java 对象转换为字节序列的过程;
Java 反序列化是指把字节序列恢复为 Java 对象的过程;
0x02 实验部分
看完上面的简述,可能很多人似懂非懂。
比如你现在写一个项目,该项目有一个登录功能。该功能每次登录都需要从指定文件txt中读取账号密码进行登录。那么该文件内账号密码为明文的状态,肯定是不安全的。所以这个时候就用到了序列化与反序列化。当把账号密码序列化之后,里面的账号密码就会变成字节形式。当有人打开也会看不懂。只有进行反序列化才能恢复原样。
类代码:
public class USER implements Serializable { public String user; public int pass; public USER(){ } public USER(String user,int pass){ this.user = user; this.pass = pass; } public void set(String user,int pass){ this.user = user; this.pass = pass; } public void get(){ System.out.println("user: " +this.user+" pass: "+this.pass); }}
序列化代码:
USER us = new USER(); us.set("zhangsan",666666); ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream("D:\\p.txt")); obj.writeObject(us); obj.close();
可以看到这就是序列化的内容
反序列化操作
ObjectInputStream obj = new ObjectInputStream(new FileInputStream("D:\\p.txt")); USER u = (USER)obj.readObject(); u.get(); obj.close();
可以看到反序列化之后,成功将数据进行恢复
0x03 结尾
本文主要讲解了ObjectOutputStream和ObjectInputStream两种类