2

サーバーからの httpresponse からのバイトを継続的に配列に読み込みたい。

最大サイズが 2048 のバイト配列を作成しています。

そのため、動的に増加する配列を作成したかったのですが、ArrayList が解決策であることがわかりました。

どうすればこの解決策を克服できますか?

どんな助けでも大歓迎です

4

2 に答える 2

2

サーバーからバイトを読み取るときに、を使用しByteArrayOutputStreamてバイトを累積できます。ArrayList<Byte>のすべてのバイト値をボックス化する必要があるため、 は使用しませんByte

蓄積されたバイトにアクセスしたい場合は、 を呼び出すだけtoByteArray()ですByteArrayOutputStream

于 2012-11-20T05:08:13.777 に答える
1

次のようなバイト配列を持つことができます。

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() );  
于 2012-11-20T05:07:57.330 に答える