File io 在Java8中从文件延迟读取字节流

File io 在Java8中从文件延迟读取字节流,file-io,java-8,binaryfiles,File Io,Java 8,Binaryfiles,所以Java8引入了很多延迟加载的流,包括一个用于使用特定字符编码从文本文件中读取行的流 但在做了大量的阅读之后,我发现没有现成的方法可以从文件中懒洋洋地读取字节块,我有点困惑为什么会这样。这是一个非常常见的用例,所以一定有很好的理由不包括在内,对吗 我的最佳解决方案似乎是使用本文提供的一些指导,定制一个拆分器来读取字节块: 但是我很想知道为什么Java8没有这个现成的特性?您到底在想什么抽象流会非常昂贵。我真的很喜欢能让我读取二进制文件的流。。。为什么流会如此昂贵?如果您想要一个“延迟加载的

所以Java8引入了很多延迟加载的流,包括一个用于使用特定字符编码从文本文件中读取行的流

但在做了大量的阅读之后,我发现没有现成的方法可以从文件中懒洋洋地读取字节块,我有点困惑为什么会这样。这是一个非常常见的用例,所以一定有很好的理由不包括在内,对吗

我的最佳解决方案似乎是使用本文提供的一些指导,定制一个拆分器来读取字节块:


但是我很想知道为什么Java8没有这个现成的特性?

您到底在想什么抽象<代码>流会非常昂贵。我真的很喜欢能让我读取二进制文件的流。。。为什么流会如此昂贵?如果您想要一个“延迟加载的流”,您可以使用好的旧
FileInputStream
,因为它不会加载任何数据,除非您通过
read
调用请求它。这就是“懒惰”的意思。您也可以使用
FileChannel
,因为它也满足定义,即使它不是名称“stream”。如果你有一个实际的问题,这些流无法解决,问一个更具体的问题。我想我没有像我应该说的那样表达我最初的问题。我希望能够读入一个二进制文件,并对其应用引入Java8的所有漂亮的函数抽象,然后将其写回一个文件。我希望在这样做的时候不要让java给我带来额外的麻烦。看起来我应该能够从一个二进制文件中得到一个流,我对它应用了一些任意的编码,以某种有趣的方式对它进行修改,然后将它流回到另一个文件,所有这些都只需要几行代码。这和“懒惰”有什么关系?另外,Java8中的Collections.stream()是否与FileInput“stream”相同?我不这么认为,但不知怎的,你把我弄糊涂了:)