IO编程之对象序列化
对象序列化的目标是将对象保存在磁盘中或者允许在网络中直接传输对象。对象序列化机制循序把内存中的java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成原来的java对象。
对象序列化样例:
public class People implements Serializable { public People(String name,String sex) { this.name = name; this.sex = sex; } private String name ; private String sex; public String getName() { return name; } public String getSex() { return sex; } @Override public String toString() { return "我的名字:"+name+" "+"我的性别是:"+sex; } } public class SerializableTest { /** * 对象序列化到磁盘文件中 */ @Test public void writeObject() { try ( //ObjectOutputStream是一个处理流,构造的时候需要节点流 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("G://test//people.txt")); ) { oos.writeObject(new People("张三","男")); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 反序列化 * */ @Test public void readObject() { try ( ObjectInputStream ois = new ObjectInputStream(new FileInputStream("G://test//people.txt")); ) { People p = (People)ois.readObject(); System.out.println(p.toString()); } catch (Exception e) { e.printStackTrace(); } } }
对象引用的序列化:如果有一个类的的属性是应用类型,那么这个引用类必须是可序列化的。当序列化该类时,程序会顺便属性字段的对象也进行序列化。
如果某个类含有敏感信息,例如银行账户信息等,这时不希望系统将该字段序列化,则通过transient关键字修饰Field,则该Field不会被序列化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具