演示ObjectOutStream(序列化)和ObjectInputStream(反序列化)的使用
- 序列化
package com.io.outputstream_; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /** * 演示ObjectOutStream的使用 */ public class ObjectOutStream_ { public static void main(String[] args)throws Exception { //序列化后,保存的文件格式,不是保存文本,而是按照它的格式来保存 String filePath="d:\\data.dat"; ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath)); //序列化数据到d:\data.dat oos.write(100);//(自动装箱)int->Integer(实现了Serializable,因为Integer的父类是Number,而Number实现了Serializable接口) oos.writeBoolean(true);//(自动装箱)boolean->Boolean(实现了Serializable) oos.writeChar('a');//char->Character(实现了Serializable) oos.writeDouble(9.5);//double->Double(实现了Serializable) oos.writeUTF("沐晴学习");//String(实现了Serializable) //保存一个dog对象 oos.writeObject(new Dog("旺财",10)); oos.close(); System.out.println("数据保存完毕(序列化形式)"); } } //如果需要序列化某个类的对象,实现Serializable接口 class Dog implements Serializable { private String name; private int age; public Dog(String name,int age){ this.name=name; this.age=age; } }
- 反序列化
package com.io.inputstream_; import jdk.swing.interop.SwingInterOpUtils; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; /** * ObjectInputStream的使用 */ public class ObjectInputStream_ { public static void main(String[] args) throws IOException, ClassNotFoundException { //指定反序列化文件 String filePath="d:\\data.dat"; ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath)); //读取 //注:读取(反序列化)的顺序需要和你保存数据(序列化)的顺序一致 System.out.println(ois.readInt()); System.out.println(ois.readBoolean()); System.out.println(ois.readChar()); System.out.println(ois.readDouble()); System.out.println(ois.readUTF()); Object dog = ois.readObject(); System.out.println("运行类型="+dog.getClass()); System.out.println("狗的信息"+dog);//底层会把Object——>Dog //关闭流,关闭外层流即可,底层流会自动关闭 ois.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义