0

javanioByteBufferのputメソッドを次のように使用したいと思います。

ByteBuffer small = ByteBuffer.allocate(SMALL_AMOUNT_OF_BYTES);
ByteBuffer big = getAllData();

while (big.hasRemaining()){
    small.put(big);
    send(small);
}

メソッドputはバッファオーバーフロー例外をスローするので、それを修正するために私が行うことは次のとおりです。

 ByteBuffer small = ByteBuffer.allocate(SMALL_AMOUNT_OF_BYTES);
 ByteBuffer big = getAllData();

 while (big.hasRemaining()){
     while (small.hasRemaining() && big.hasRemaining()){
         small.put(big.get());
     }

     send(small);
 }

私の質問は-そうするためのより良い方法、または少なくとも私が望むことをするための効率的な方法はありますか?

4

1 に答える 1

5

ブール値を使用する代わりに、hasRemaining()実際に呼び出しremaining()て、残りのバイト数を正確に把握することができます。

get()次に、小さな固定サイズの中間バイト配列を配列ベースのメソッドと一緒に使用して、put()バイトの「チャンク」を転送し、残りのスペースの量に基づいて中間バッファーに入れられるバイト数を調整できます。

于 2012-05-16T11:34:53.947 に答える