io流-序列化和反序列化
序列化和反序列化概述
java提供了一种对象序列化的机制 用一个字节序列可以表示一个对象 该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息 字节序列写出到文件之后 相当于文件中持久保存一个对象的信息
反之 该字节序列还可以从文件中读取回来 重构对象 对它进行反序列化 对象的数据、对象类型和对象中存储的数据信息 都可以用来在内存中创建对象
图解:
对象序列化流_ObjectOutputStream
ObjectOutputStream:对象的序列化
作用:把对象以流的方式写入到文件中保存
构造方法:
ObjectOutputStream(OutputStream out):创建写入指定OutputStream的ObjectOutpuStream
参数:
OubputStream:字节输出流
特有的成员方法:
void writeObject(Object obj):将指定的对象写入ObjectOutputStream
使用步骤:
1.创建ObjectOutputStream对象 构造方法中传递字节输出流
2.使用ObjectOutputStream对象中的方法WriteObject 把对象写入到文件中
3.释放资源
代码
实体类 /** * 当我们要使用序列化时 实体类必须实现这个接口Serializable */ public class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } 测试类: public static void main(String[] args) throws IOException { Person p = new Person("张三", 18); ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("E:\\file\\序列化.txt")); os.writeObject(p); os.close(); }
运行前:
运行结果:
运行后:
序列化.txt
对象反序列化流_ObjectInputStream
ObjectInputStream反序列化流 将之前使用ObjectOutputStream序列化的原始数据恢复为对象
作用:把文件中保存的对象 以流的方式读取出来使用
构造方法:
ObjectInputStream(InputStream in):创建从指定InputStream读取的ObjectInputStream
参数:
inputSteam in:字节输入流
特有的成员方法:
Object readObject():从ObjectInputStream读取对象
使用步骤:
1.创建ObjectInputStream对象 构造方法中传递字节输入流
2.使用ObjectInputStream对象中的方法readObject读取保存对象的文件
3.释放资源
4.使用读取出来的对象(打印)
代码
public static void main(String[] args) throws IOException, ClassNotFoundException { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\file\\序列化.txt")); Object o = ois.readObject(); ois.close(); /* 反序列化使用前提 1.类必须实现Serializable 2.必须存在类对象的class文件 */ System.out.println(o); }
运行结果:
Person{name='张三', age=18}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix