在JDK官方文档中,
java.io.InputStream#read(byte[], int, int)
说:
设k为实际读取的字节数;这些字节将存储在元素 b[off] 到 b[off+k-1] 中,元素 b[off+k] 到 b[off+len-1] 不受影响。
但这句话过后,下一段说:
在每种情况下,元素 b[0] 到 b[off-1] 和元素 b[off+len] 到 b[b.length-1] 不受影响。
第一句要求对读操作有更强的限制。
文档说“不受影响”。我将其解释为在读取操作期间无法修改它。但即使是b[off+k]~b[off+len-1]也是无法修改的?
缓冲区
b
在概念上分为以下几个部分:
0
到off-1
:这些字节不受影响(2.段落)off
到off+k-1
:这些包含已读取的字节(1.段落)off+k
到off+len-1
:这个范围包含在读取请求中,但由于数据不足而没有改变(1.段落)off+len
到off+b.length-1
:这些字节不受影响(2.段落)这四个范围之间没有重叠。