首页 > Java > java教程 > 如何将 Java 可序列化对象与字节数组相互转换?

如何将 Java 可序列化对象与字节数组相互转换?

Susan Sarandon
发布: 2025-01-03 04:52:39
原创
909 人浏览过

How to Convert Java Serializable Objects to Byte Arrays and Back?

将 Java 可序列化对象转换为字节数组

在需要通过网络传输 Java 对象或以二进制格式存储它们的情况下,将它们转换为字节数组可能是必不可少的。让我们考虑一个场景,其中我们有一个可序列化的类 AppMessage。要通过套接字将 AppMessage 实例发送到另一台机器并根据接收到的字节重建它们,我们可以按照以下步骤操作:

序列化:将对象转换为字节数组

  1. 准备ByteArrayOutputStream: 创建一个ByteArrayOutputStream作为序列化后的临时存储对象。
  2. ObjectOutputStream: 使用 ObjectOutputStream 将对象写入 ByteArrayOutputStream。
  3. 刷新并读取字节: 刷新 ObjectOutputStream 以确保所有数据写入字节缓冲区并从中检索字节数组ByteArrayOutputStream.

此过程的代码片段:

static byte[] serialize(final Object obj) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    try (ObjectOutputStream out = new ObjectOutputStream(bos)) {
        out.writeObject(obj);
        out.flush();
        return bos.toByteArray();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
登录后复制

反序列化:从字节数组重建对象

  1. 创建一个ByteArrayInputStream: 使用以下命令将字节数组转换回输入流ByteArrayInputStream.
  2. ObjectInputStream:从 ByteArrayInputStream 创建一个 ObjectInputStream 来读取对象数据。
  3. readObject():使用 readObject() 方法从字节流中重建原始对象

对应代码snippet:

static Object deserialize(byte[] bytes) {
    ByteArrayInputStream bis = new ByteArrayInputStream(bytes);

    try (ObjectInput in = new ObjectInputStream(bis)) {
        return in.readObject();
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}
登录后复制

使用这些方法,您可以通过网络高效发送可序列化对象,例如 AppMessage 实例,并在接收端重建它们。

以上是如何将 Java 可序列化对象与字节数组相互转换?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板