Java如何从InputStream中读取收入大小?

Java how to read from an InputStream the incomed size?

本问题已经有最佳答案,请猛点这里访问。
1
2
byte[] b = new byte[10000];
len = readerIn.read(b); // InputStream

我的字节大小是10000,但InputStream的大小可以是低或高。有没有一种方法可以只读取进入InputStream的数据的大小?


你可以用ByteArrayOutputStream来做这个

1
2
3
4
5
6
7
8
9
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int reads = is.read();

while(reads != -1){
    baos.write(reads);
    reads = is.read();
}

byte[] data = baos.toByteArray();

数据数组大小合适,包含或InputStream的所有数据。


在读取方法中不加参数,可以逐字节读取数据读取的全部大小:

1
len = readerIn.read();

您可以继续读取流的结尾

1
2
3
4
5
 while((readerIn.read())!=-1){

     [your code]

 }