【问题标题】:The off parameter in BufferedInputStream.read(byte[] b, int off, int len)BufferedInputStream.read(byte[] b, int off, int len)中的off参数
【发布时间】:2014-10-08 19:30:42
【问题描述】:

javadoc 说明如下。

Parameters:
    b - destination buffer.
    off - offset at which to start storing bytes.
    len - maximum number of bytes to read.

我想确认我对“开始存储字节的偏移量”的理解。这是否意味着off 是“目标缓冲区b 处开始存储字节的索引”?听起来确实像off 的意思。如果off 是“开始读取字节的BufferedInputStream 的偏移量”,我认为该方法更有用,但我想确认一下。我尝试查看源代码,但很难阅读。

一个小问题:当读取一个流的 1024 字节时,是否会一直从流中删除这 1024 个字节?

【问题讨论】:

    标签: java bufferedinputstream


    【解决方案1】:

    这是否意味着 off 是“目标缓冲区 b 处开始存储字节的索引”?

    它是documented:“读取的第一个字节存储到元素b[off]”中。

    当读取一个流的 1024 字节时,是否会一直从流中删除这 1024 个字节?

    当然,但您似乎真的在问,如果您提供 1024 字节的缓冲区,是否总是会读取 1024 字节。答案是否定的。是documented:“正在尝试读取至少一个字节”。

    【讨论】:

    • 啊,我没注意到。我首先查看了 Eclipse 的 BufferedInputStream 的 javadoc。关于附带的问题,我实际上是在问下一个读取命令是否总是会读取下一组字节(如果有的话)。因此,不会再次读取同一组字节。会是这样吗?
    【解决方案2】:

    是的。 offb 中的索引,流将在其中开始输入len 字节。

    当读取一个流的 1024 字节时,是否会一直从流中删除这 1024 个字节?

    使用InputStream,您不知道下面发生了什么。您所知道的只是您可以使用的方法以及它们的作用(他们的文档所说的)。实现可以为所欲为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-13
      • 2018-01-09
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多