我需要将流(Java 8流,而不是InputStream)转换为字节数组。
我尝试使用toArray
的{{1}}方法,但它不接受Stream
,因为byte[]::new
是原始类型。
我也尝试使用byte
的{{1}}方法,但它不接受参数,它假设您想要获得toArray
。
可以将流转换为列表或盒装IntStream
类型的数组,然后将其转换为int[]
,但我想知道是否有更好的方法。
编辑:添加代码,如果这有助于理解问题。这不编译,它只是伪代码。如果有帮助,您也可以将Byte
视为byte[]
,出于我的目的,这无关紧要。
IntStream
答案 0 :(得分:0)
我猜你可以从原始流的各个条目中创建byte[]
,然后最后将它们连接起来。
static byte[] <T> toByteArray(Stream<T> stream, Function<T, byte[]> transform) {
Stream<byte[]> arrayStream = stream.map(transform);
arrayStream.collect(concatArrays);
}
但是,我能想到的concatArrays
收集器的唯一实现是:
byte[]
System.arraycopy
组合数组我希望你最好用你的拳击Byte
然后转换&#34;在几乎所有情况下。