【问题标题】:Is ByteArrayInputStream really a stream?ByteArrayInputStream 真的是流吗?
【发布时间】:2020-12-05 00:53:38
【问题描述】:

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

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

点 C >> 读取部分数据并进行一些处理。阅读更多内容并忘记先前读取的数据并在当前读取中执行某些操作等等......这定义了数据是流式传输的。

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

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

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

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

有人可以帮忙吗?

【问题讨论】:

标签: java optimization file-io inputstream bytearrayinputstream


【解决方案1】:

因为对于该类的用户而言,ByteArrayInputStream表现类似于流,即它具有相同的接口。

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

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

【讨论】:

  • 我会更进一步说ByteArrayInputStream 一个流,它不只是表现像一个。流的概念没有说明所述流的来源。仅仅因为源是内存中的byte[] 不会改变任何东西。
猜你喜欢
  • 2014-12-05
  • 2013-06-11
  • 1970-01-01
  • 2014-08-02
  • 2010-09-24
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多