ByteArrayInputStream 真的是一个流吗?

Is ByteArrayInputStream really a stream?

A 点 >> Java 中的一次调用可以读取完整的文件并将数据存储在内存中并进行处理。它适用于较小的文件。很好!

B 点 >> 当涉及到非常大的文件时,我们需要进行某种优化以避免内存溢出。因此 IOStream 存在,其名称本身就表明它是 Stream。

C点>>读取部分数据并做一些处理。多读一些,忘记以前读取的数据,对当前读取的数据做一些事情等等……这定义了数据流。

我发现 C 点的 Streaming 概念的标准定义(和)ByteArrayInputStream 的存在之间存在混淆。

问题 1:使用 ByteArrayInputStream,我必须用我已经在内存中的整个数据(使用 byte[])初始化流。那么,为什么它首先是 InputStream 的子类呢?因为它什么都没有。

问题 2:为什么 JavaDoc 说了一些有关 ByteArrayInputStream 缓冲的内容。它在哪里应用?

对不起,如果我的理解不好。我没有在网上获得此类缩小问题的相关答案。

有人可以帮忙吗?

因为,对于 class 的用户而言,ByteArrayInputStream 的行为 类似于流,即它具有相同的界面。

更一般地说,您应该将流视为具有特定接口的东西,而不是用于特定目的的东西。

同样如此,例如,ArrayList 的行为类似于 List,但在内部,它是一个数组,这意味着,与(例如)a LinkedList 它具有恒定的随机访问时间。