无法获取字节数组流的方法。

5

我想获取字节数组流,但我了解到Arrays没有获取字节数组流的方法。

byte[] byteArr = new byte[100];
Arrays.stream(byteArr);//Compile time error

我的问题:

  • 为什么不支持这个功能?
  • 如何获取字节数组的流?

注意:我知道可以使用Byte[]代替byte[],但这并没有回答我的问题。


这个问题之前已经有答案了:https://dev59.com/dV4c5IYBdhLWcg3weaP8 - John Kuhns
1
@JohnKuhns,您提供的链接是对象流。OP想要一个原始字节流。 - JB Nizet
1个回答

7

原始流只有三种类型:IntStream、LongStream和DoubleStream。

因此,您可以使用最接近的IntStream,其中数组中的每个字节都被升级为int。

据我所知,从字节数组构建IntStream的最简单方法是

    IntStream.Builder builder = IntStream.builder();
    for (byte b : byteArray) {
        builder.accept(b);
    }
    IntStream stream = builder.build();

编辑: assylias 提供了另一种更简短的方法:

IntStream stream = IntStream.range(0, byteArr.length)
                            .map(i -> byteArray[i]);

5
您可以使用 IntStream.range(0, byteArr.length).map(i -> byteArr[i])。该代码将生成一个包含字节数组中每个元素的整数流。 - assylias
@assylias:不错。我没有想到那个技巧。 - JB Nizet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接