从包含的输入流中将最多 len
个字节读入一个 byte 数组中。尽量读取 len
个字节,但读取的字节数可能少于 len
个,也可能为零。以整数形式返回实际读取的字节数。
在输入数据可用、检测到文件末尾或抛出异常之前,此方法将阻塞。
如果 len
为零,则不读取任何字节并返回 0
;否则,尝试读取至少一个字节。如果因为流位于文件未尾而没有字节可用,则返回值 -1
;否则,至少读取一个字节并将其存储到 b
中。
将读取的第一个字节存储到元素 b[off]
中,将下一个字节存储到 b[off+1]
中,依此类推。读取的字节数至多等于 len
。设 k 为实际读取的字节数;这些字节将存储在 b[off]
到 b[off+
k-1]
的元素中,b[off+
k]
到 b[off+len-1]
的元素不受影响。
在所有情况下,b[0]
到 b[off]
的元素和 b[off+len]
到 b[b.length-1]
的元素都不受影响。
- 覆盖:
- 类
filterinputstream
中的 read
- 参数:
b
- 存储读取数据的缓冲区。off
- 目标数组 b
中的起始偏移量len
- 读取的最大字节数。
- 返回:
- 读入缓冲区的字节总数;如果因为已经到达流末尾而没有更多的数据,则返回
-1
。
- 抛出:
nullpointerexception
- 如果 b
为 null
。
indexoutofboundsexception
- 如果 off
为负,len
为负,或者 len
大于 b.length - off
ioexception
- 如果不是因为流位于文件末尾而无法读取第一个字节;该流已关闭并且底层输入流在关闭后不支持读取操作;发生其他 i/o 错误。- 另请参见:
filterinputstream.in
,
inputstream.read(byte[], int, int)