如果我这样做,inStream.read(buffer, 0, 65); Java 会等待所有 65 个字节,还是会等待一定时间,然后尽可能地填充缓冲区。
最佳答案
InputStream.read(byte[] b, int off, int len)
将读取字节到给定的 byte[]
中,直到 len
,并返回实际读取的字节数,如果结束则返回 -1
遇到流。它必须尝试读取至少一个字节(除非这样做,否则会阻塞),除非遇到流末尾,将 0
作为 len
参数的参数给出,或者抛出异常。
在读取 len
个字节之前调用是否阻塞是一个实现细节,特别是 java.io.InputStream
中提供的默认实现将阻塞直到 len
字节被读取,遇到流的末尾,或者抛出异常,但是实现可以立即立即返回可用字节(只要至少有一个字节要读取)并且仍然满足方法的契约。
总而言之,您应该始终检查返回值以了解实际从流中读取了多少字节。
关于Java 是否 InputSream.read(byte[] b, int offset, int length) 等待指定的全部字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597244/