关于ByteArrayOutputStream.read(byte[])的问题

 public static byte[] readInputStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = inStream.read(buffer)) != -1){
            outStream.write(buffer,0,len);
        }
        inStream.close();
        return outStream.toByteArray();

    }

这一段没有看懂,为什么要循环呢,难道不是一次全部读完吗,我看API也没看懂,求解释

 while ((len = inStream.read(buffer)) != -1){
            outStream.write(buffer,0,len);
        }

buffer是1024字节,即1KB,的缓冲区,inStream.read(buffer)就是从输入流中读取一定量(<=1024字节)的数据到缓冲区buffer中,返回值len就是
读取到数据的长度,当len == -1时表示没有更多的数据可以读了。所以,这个循环的意思就是,从inStream中每次读取不大于1024个字节的数据
buffer中,再将buffeer中的值写入到输出流outStream中,直到输入流没有更多数据,即返回-1的时候停止。
API见:https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read(byte[])

当然不是一次全部读完的啊,因为你定义了一个byte[] buffer = new byte[1024];缓冲区存储读取的内容,如果读取长度超过1024字节,就会分批读的。