扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
public abstract int read()
throws IOException
0
到 255
范围内的 int
字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1
。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。 -1
。 IOException
- 如果发生 I/O 错误。public int read(byte[] b)
throws IOException
b
中。以整数形式返回实际读取的字节数。在输入数据可用、检测到文件末尾或者抛出异常前,此方法一直阻塞。 b
为 null
,将抛出 NullPointerException
。如果 b
的长度为 0,则无字节可读且返回 0
;否则,要尝试读取至少一个字节。如果因为流位于文件末尾而没有可用的字节,则返回值 -1
;否则,至少可以读取一个字节并将其存储在 b
中。 b[0]
中,下一个存储在 b[1]
中,依次类推。读取的字节数最多等于 b
的长度。让 k 为实际读取的字节数;这些字节将存储在元素 b[0]
至 b[
k-1]
之间,不影响元素 b[
k]
至 b[b.length-1]
。 IOException
。特别是,如果输入流已关闭,则抛出 IOException
。 InputStream
的 read(b)
方法的效果等同于: read(b, 0, b.length)
b
- 读入数据的缓冲区。 -1
。 IOException
- 如果发生 I/O 错误。 public int read(byte[] b,
int off,
int len)
throws IOException
len
个数据字节读入字节数组。尝试读取多达 len
字节,但可能读取较少数量。以整数形式返回实际读取的字节数。 b
为 null
,则抛出 NullPointerException
。 off
为负,或 len
为负,或 off+len
大于数组 b
的长度,则抛出 IndexOutOfBoundsException
。 len
为 0,则没有字节可读且返回 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]
都不会受到影响。 IOException
。特别是,如果输入流已关闭,则抛出 IOException
。 InputStream
的 read(b,
off,
len)
方法只重复调用方法 read()
。如果第一个这样的调用导致 IOException
,则从对 read(b,
off,
len)
方法的调用中返回该异常。如果对 read()
的任何后续调用导致 IOException
,则该异常会被捕获并将发生异常时的位置视为文件的末尾;到达该点时读取的字节存储在 b
中并返回发生异常之前读取的字节数。建议让子类提供此方法的更有效的实现。 b
- 读入数据的缓冲区。 off
- 在其处写入数据的数组 b
的初始偏移量。 len
- 要读取的最大字节数。 -1
。 IOException
- 如果发生 I/O 错误。 -1
。如果因已到达流末尾而没有可用的字节,则返回值 -1
。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。”-1
。”OutputStream类,此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器。
OutputStream类的write方法,每执行一次,就向这条高速公路上发送了一批数据。OutputStream类的一些子类,它们并不是在每次write()方法执行之后立刻把这批数据发送到数据高速公路上的。而是只有在执行flush()方法之后,才把之前write的多批数据真正地发送到数据通道中。
这样,多个write()方法发送的数据就变为了一批数据了!
通过read()方法读入时,当读完该批数据之后,如果再一次执行read()方法,就会立刻返回-1。
实际上,这是并没有到达流的末尾!仅仅是读完了一批发送的数据而已!
如果我们又一次执行read()方法,那么,如果:
1,流没有结束。也就是说,对面的发送端可能还会发送下一批数据时,就会进入阻塞状态。当前线程暂停,直到读取到输入流中下一批数据的第一个字节。
2,流结束了。也就是说,对面的发送端不再发送任何数据,也即:这条数据通道已经没有用了,这时,可以说“到达流的末尾”了!返回-1。
所以,InputStream及其子类的read()方法的注释是不完整的!
public abstract int read()
throws IOException
0
到 255
范围内的 int
字节值。-1
。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。 -1
。 IOException
- 如果发生 I/O 错误。 我们常常使用public int read(byte[] b,
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者