首页 > 解决方案 > 如何将对象数组转换为 byte[]

问题描述

我有一个对象数组。那些对象提供了方法toByteArray()。如果我打电话foo.toByteArray(),我会得到这个对象的字节表示。

我正在努力将这个对象数组转换为字节数组。

我的第一种方法是:

Arrays.stream(fooArray).map((fooEntry) -> fooEntry.toByteArray()).toArray();

但是,这确实返回了一个对象数组而不是 byte[]。做我想做的最简单的方法是什么?

标签: javaarraysstreambyteprimitive

解决方案


数组是可序列化的,因此只要您的对象也是可序列化的,那么您应该能够将 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 很陌生,但这应该可行。


推荐阅读