InputStream.read()返回的0是什么意思?如何处理呢?


问题内容

用什么方法返回0(读取的字节数)InputStream.read?如何处理这种情况?

更新: 我的意思是read(byte[] b)read(byte[] b, int off, int len)方法返回读取的字节数。


问题答案:

a
InputStream可能0从调用返回的唯一情况read(byte[])byte[]传入的长度为0时:

 byte[] buf = new byte[0];
 int read = in.read(buf); // read will contain 0

正如JavaDoc的这一部分所指定的:

如果b的长度为零,则不读取任何字节,并返回0

我的猜测:您曾经available()看到缓冲区应该有多大,然后返回0。请注意,这是对的滥用available()。JavaDoc明确声明:

使用此方法的返回值分配旨在容纳该流中所有数据的缓冲区永远是不正确的。