-2

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

B点>>当涉及到非常大的文件时,我们需要做一些优化来避免内存溢出。因此 IOStream 存在,其名称本身传达它是一个 Stream。

C 点 >> 读取部分数据并做一些处理。阅读更多内容并忘记先前读取的数据并在当前读取中做一些事情等等 - ......这定义了数据是流式传输的。

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

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

问题 2:为什么 JavaDoc 中提到了 ByteArrayInputStream 的缓冲。它在哪里应用?

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

有人可以帮忙吗?

4

1 回答 1

3

Because, to the user of the class, a ByteArrayInputStream behaves like a stream, i.e. it has the same interface.

More generally, you should think of a stream as something that has a certain interface, not as something that is used for a certain purpose.

The same is true, for example, for ArrayList which behaves like a List but, internally, is an array, which means that, unlike (for example) a LinkedList it has constant random access times.

于 2020-08-15T09:45:05.730 回答