如果我这样做,inStream.read(buffer,0,65); Java会等待所有65个字节,还是会等待一段时间,然后只需填充缓冲区就可以填充多少个字节。
答案 0 :(得分:0)
InputStream.read(byte[] b, int off, int len)
将字节读入给定的byte[]
,最多为len
,并返回实际读取的字节数,如果遇到流末尾,则返回-1
。它必须尝试读取至少一个字节(除非它被阻塞),除非遇到流的末尾,0
作为len
参数的参数给出,或者抛出异常。
是否在读取len
字节之前调用阻塞是一个实现细节,特别是java.io.InputStream
中提供的默认实现将阻塞,直到len
个字节被读取,结束遇到流,或者抛出异常,但是实现可以立即急切地返回可用字节(只要有至少一个要读取的字节),并且仍然满足方法的契约。
总而言之,您应该始终检查返回值,以查看实际从流中读取的字节数。