java - 如何将对象数组转换为 byte[]
问题描述
我有一个对象数组。那些对象提供了方法toByteArray()
。如果我打电话foo.toByteArray()
,我会得到这个对象的字节表示。
我正在努力将这个对象数组转换为字节数组。
我的第一种方法是:
Arrays.stream(fooArray).map((fooEntry) -> fooEntry.toByteArray()).toArray();
但是,这确实返回了一个对象数组而不是 byte[]。做我想做的最简单的方法是什么?
解决方案
数组是可序列化的,因此只要您的对象也是可序列化的,那么您应该能够将 Array 转换为 byte[] 而无需访问元素的 toByteArray() 方法。
首先确保您的对象是可序列化的:
public class MyObject implements Serializable {
//... Your class
}
现在您应该能够使用序列化整个数组ByteArrayOutputStream:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(fooArray);
oos.flush();
byte[] byteArray = bos.toByteArray();
我不确定这是否是最好的方法,因为我对 Java 很陌生,但这应该可行。
推荐阅读
- javascript - 反应重定向/路由器
- java - 如何使用 Java 中的 Firebase Admin 将文件上传到 Firebase 存储?
- javascript - 如何在 react-native 中有两个居中且可点击的图像链接
- firefox - Blazor 文件输入单击在 Firefox 中不起作用
- ruby-on-rails - Elasticsearch::Transport::Transport::Errors::Forbidden: [403] 发送超过 1200 个字符的文本字段时出错
- python - 如何在 Snakemake 中引用 anaconda 环境中的可执行文件
- c++ - 将文件上传到 S3 aws sdk cpp 时出错
- python - 如何为 ECS 任务定义创建日志记录?
- spring - 为什么轴突框架不能插入到自己的表中?
- javascript - 无法读取未定义的属性“id”