【发布时间】:2020-12-05 00:53:38
【问题描述】:
Point A >> 可以在 Java 中一次调用读取完整文件并将数据存储在内存中并进行处理。它适用于较小的文件。很好!
点 B >> 当涉及到非常大的文件时,我们需要做一些优化来避免内存溢出。因此 IOStream 存在,其名称本身就传达了它是一个 Stream。
点 C >> 读取部分数据并进行一些处理。阅读更多内容并忘记先前读取的数据并在当前读取中执行某些操作等等......这定义了数据是流式传输的。
我发现 C 点的 Streaming 概念的标准定义(和)存在 ByteArrayInputStream 之间存在混淆。
问题 1:使用 ByteArrayInputStream,我必须用我已经在内存中的整个数据(使用 byte[])初始化流。那么,为什么它首先是 InputStream 的子类呢?因为它什么都不是。
问题 2:为什么 JavaDoc 中提到了 ByteArrayInputStream 的缓冲。它在哪里应用?
对不起,如果我的理解不好。我没有在网上获得此类狭隘问题的相关答案。
有人可以帮忙吗?
【问题讨论】:
-
回答你的第二个问题:它提到了缓冲,因为数据存储在内存中
byte[](即缓冲区)中。 -
没有
BufferedArrayInputStream这样的东西。你的意思是ByteArrayInputStream?如果是这样,因为它扩展了java.io.InputStream,它怎么可能不是是一个 I/O 流?
标签: java optimization file-io inputstream bytearrayinputstream