尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Java-实例-序列化与反序列化(Serializable)
理解Serializable序列化---将对象状态转换为字节流以便存储或传输。序列化是冻结对象反序列化是解冻对象想让一个对象可序列化其类必须实现java.io.Serializable接口。这个接口没有任何方法只起标记作用告诉JVM这个类的对象允许被序列化。在Android中进行序列化主要有两种选择Java原生的Serializable和Android专属的Parcelable。它们最核心的区别在于设计初衷和应用场景Serializable是Java的标准接口使用简单但效率较低适合持久化存储存文件或网络传输-2-8-11。Parcelable是Android特有的接口实现稍复杂但性能极高专为内存间的高效数据传输而设计是Android组件间通信如Intent、Binder跨进程通信的首选实例将对象person转换为字节流存储在工程target文件夹中。调用Person person new Person(九股烟, 20); byte[] bytes0 serialize(person); // 序列化将对象保存到文件 save(bytes0); //保存 byte[] bytes1 read(); //读出 Person p deserialize(bytes1); // 反序列化从文件恢复对象 System.out.println(反序列化对象 p.toString());功能函数// // 1. 序列化对象 → 字节数组 // public static byte[] serialize(Person person) { try ( ByteArrayOutputStream baos new ByteArrayOutputStream(); ObjectOutputStream oos new ObjectOutputStream(baos)) { oos.writeObject(person); oos.flush(); return baos.toByteArray(); } catch (IOException e) { e.printStackTrace(); return null; } } // // 2. 反序列化字节数组 → 对象 // public static Person deserialize(byte[] bytes) { if (bytes null || bytes.length 0) {return null;} try (ByteArrayInputStream bais new ByteArrayInputStream(bytes); ObjectInputStream ois new ObjectInputStream(bais)) { return (Person) ois.readObject(); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); return null; } } String targetDir target/; String fileName path_bytes.km; // // 3. 保存字节数组 → 文件 // public void save(byte[] data) { try { // 确保target目录存在 File file new File(targetDir, fileName); file.getParentFile().mkdirs();// 确保target目录存在 try (FileOutputStream fos new FileOutputStream(file)) { fos.write(data); System.out.println(保存成功: file.getAbsolutePath()); System.out.println(数据大小: data.length 字节); } } catch (IOException e) { e.printStackTrace(); } } // // 4. 读取文件 → 字节数组 // public byte[] read() { File file new File(targetDir, fileName); file.getParentFile().mkdirs();// 确保target目录存在 if (!file.exists()) {return null;} try (FileInputStream fis new FileInputStream(file)) { byte[] data new byte[(int) file.length()]; fis.read(data); System.out.println(读取成功: file.getAbsolutePath()); System.out.println(数据大小: data.length 字节); return data; } catch (IOException e) { e.printStackTrace(); return null; } }Person.java 接口Serializableimport java.io.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 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 }; } }
RELATED

相关推荐

Word页眉页脚批量修改全攻略:从模板应用到VBA自动化实战

Word页眉页脚批量修改全攻略:从模板应用到VBA自动化实战

1. 项目概述:为什么“统一批量修改”是Word文档处理的刚需如果你处理过十份以上的Word文档,尤其是那些来自不同部门、不同人员或者历经多次修订的文档,你一定会对页眉页脚这个“小东西”又爱又恨。爱的是它能提供统一的文档标识、页码导航&am…

📅 2026/10/21 3:38:06
CK9561怎么接线?

CK9561怎么接线?

重新构思的图示说明为了更好地传达核心概念,我重新设计了图示并配以清晰的文字说明。图1:核心概念示意图这张示意图通过简洁的图形和箭头,清晰地展示了关键组件之间的关系与数据流向。虽然风格抽象,但重点突出,便于读者…

📅 2026/10/21 3:37:39
大功率IGBT串联动态均压驱动方案:从原理到工程实践

大功率IGBT串联动态均压驱动方案:从原理到工程实践

1. 项目缘起:为什么大功率IGBT串联驱动是个“老大难”?在高压大功率领域,比如高压直流输电(HVDC)、柔性交流输电系统(FACTS)、大功率工业变频器以及某些特种电源里,我们常常会遇到一…

📅 2026/9/1 3:00:35
MORE NEWS

更多资讯

📰

Linux文件描述符耗尽排查:从Too many open files到根因定位

1. 从一次服务雪崩说起:文件句柄耗尽的真实面目凌晨两点,监控告警突然炸了。一台跑了半年多的业务服务器上,核心服务开始疯狂报错,日志里刷屏的就是那句让运维人血压飙升的话:Too many open files。更诡异的是&#xf…

📰

无名杀:免费开源的网页版三国杀启动指南与武将自定义路径

无名杀:免费开源的网页版三国杀启动指南与武将自定义路径 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 无名杀(noname)是一款免费、开源的网页版三国杀卡牌游戏:浏览器打开即玩&…

📰

Docker基础学习笔记:从镜像容器到常用命令与实战踩坑经验

1. 为什么我最终把Docker放进了日常工具箱1.1 从一次环境翻车说起最早接触Docker,我其实有点不以为然。那会儿我总觉得,部署不就是一个“代码拷过去,依赖装一遍,服务跑起来”的事情吗?直到有一次,某个后端同…

📰

PPO算法详解:大模型人类偏好对齐中的温和教练

你有没有遇到过这样的情况:同一个问题,换个问法,大模型的回答质量就天差地别;甚至同一个问法,多问几次,答复也飘忽不定。这背后的核心问题,就是大模型调优里常说的“人类偏好对齐”。要让模型从…

📰

Linux网络编程必知:自定义协议设计与Socket收发踩坑全解

做Linux网络编程绕不开的一个话题就是应用层自定义协议。TCP在你面前铺开的只是一条可靠的字节流通道,字节流本身没有任何语义,两个进程之间要理解彼此,必须自己定一套对话的规则。这套规则,就是你应用层的协议。很多新手习惯直接…

📰

SpringBoot+Vue3协同过滤商品推荐系统实战:从算法到前后端落地

电商里有一类需求隔三差五就有人问:能不能根据用户浏览过什么、买过什么,自动给每个用户推一批“他可能想要”的商品?说白了就是做一个商品推荐系统。我最近在本地完整跑通了一套 SpringBoot Vue3 MyBatis 协同过滤商品推荐项目&#xff0c…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬