首页 > Java > java教程 > 如何在 Java 对象与字节数组之间进行序列化和反序列化?

如何在 Java 对象与字节数组之间进行序列化和反序列化?

DDD
发布: 2024-12-17 18:27:11
原创
727 人浏览过

How Can I Serialize and Deserialize Java Objects to and from Byte Arrays?

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

在 Java 中,Serialized 接口允许将对象转换为字节流。当对象需要通过网络传输或存储在数据库中时,此功能至关重要。

将对象编码为字节数组

要将对象编码为字节数组,可以使用执行以下步骤:

  1. 实例化一个 ByteArrayOutputStream 对象。
  2. 创建一个使用 ByteArrayOutputStream 作为输出流的 ObjectOutputStream 对象。
  3. 使用 writeObject 方法将对象写入 ObjectOutputStream。
  4. 刷新 ObjectOutputStream 以确保所有数据都写入 ByteArrayOutputStream。
  5. 使用 toByteArray 从 ByteArrayOutputStream 中检索字节数组

从字节数组中解码对象

要从字节数组中解码对象,可以执行以下操作:

  1. 实例化一个使用字节数组的 ByteArrayInputStream 对象。
  2. 使用 ByteArrayInputStream 作为其对象创建一个 ObjectInputStream 对象输入流。
  3. 使用 readObject 方法从 ObjectInputStream 读取对象。

示例代码

这里是用于序列化和反序列化:

序列化:

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);
    }
}
登录后复制

反序列化:

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);
    }
}
登录后复制

通过这些方法,你可以轻松转换对象与字节数组之间的传入和传出,使您能够通过网络传输数据或将其持久保存到存储。

以上是如何在 Java 对象与字节数组之间进行序列化和反序列化?的详细内容。更多信息请关注PHP中文网其他相关文章!

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