我想将来自服务器的 httpresponse 中的字节连续读取到一个数组中。
我正在创建一个最大大小为 2048 的字节数组。
所以,我想创建一个动态增加的数组,我发现 ArrayList 是解决方案。
我该如何克服这个解决方案?
任何帮助将不胜感激
您可以在从服务器读取字节时使用 aByteArrayOutputStream
来累积字节。我不会使用 an ,ArrayList<Byte>
因为它需要将 a 中的每个字节值装箱Byte
。
当您想要访问已累积的字节时,只需调用toByteArray()
.ByteArrayOutputStream
你可以有一个字节数组,如:
List<Byte> arrays = new ArrayList<Byte>();
将其转换回数组
Byte[] soundBytes = arrays.toArray(new Byte[arrays.size()]);
-您也可以使用ByteArrayInputStream
和ByteArrayOutputStream
。
例如:
InputStream inputStream = socket.getInputStream();
// read from the stream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] content = new byte[ 2048 ];
int bytesRead = -1;
while( ( bytesRead = inputStream.read( content ) ) != -1 ) {
baos.write( content, 0, bytesRead );
} // while
// now, as you have baos in hand, I don't think you still need a bais instance
// but, to make it complete,
// now you can generate byte array input stream as below
ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() );