扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。