1

如果我这样做, inStream.read(buffer, 0, 65); Java 会等待所有 65 个字节,还是会等待一定的时间,然后只用它可以填充多少个字节来填充缓冲区。

4

1 回答 1

0

InputStream.read(byte[] b, int off, int len)会将字节读入给定的byte[], 最多len, 并返回实际读取的字节数或-1是否遇到流的结尾。它必须尝试读取至少一个字节(除非它这样做,否则阻塞),除非遇到流的结尾,a0作为参数的len参数给出,或者抛出异常。

调用是否阻塞直到len读取字节是一个实现细节,特别是提供的默认实现java.io.InputStream将阻塞直到len读取字节、遇到流的结尾或抛出异常,但是实现可以急切地返回可用字节立即(只要至少有一个字节要读取)并且仍然满足方法的约定。

总而言之,您应该始终检查返回值以查看实际从流中读取了多少字节。

于 2013-09-03T16:58:17.757 回答