从Java中获取没有已知大小的InputStream的字节数组?

Zim*_*Zim 1 java bytearray inputstream stream

我通过套接字发送一个字节数组,我通过DataInputStream接收它.我不知道字节数组的大小,也没办法检查.我试过这样做:

byte[] content = new byte[ARRAY_SIZE]; 
int something; 

while((something = inFromStream.read()) > 0)  
    output.write(something); 
Run Code Online (Sandbox Code Playgroud)

但是,这仍然意味着我需要知道字节数组的大小.我不想只填写一个巨大的数字(因为从流中接收的字节数组可能是100或甚至5000000000).我该如何处理(最好使用标准的Java API /库)?

Jef*_*rey 6

你可以把这byte[]件作品发送到OutputStream

byte[] buffer = new byte[1024 /* or some other number */];
int numRead;

while((numRead = inputStream.read(buffer)) > 0) {
    outputStream.write(buffer, 0, numRead);
}
Run Code Online (Sandbox Code Playgroud)