2012-05-16 52 views
0

我想通過以下方式使用java的put方法NIO的ByteBuffer:的Java字節緩衝區「放」的方法 - 防止緩衝區溢出

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); 
} 

我的問題是 - 有沒有更好的方式來做到這一點,或至少一種有效的方式做我想做什麼?

回答

5

那麼,你可以實際調用remaining()找出剩餘的字節數,而不是使用布爾值hasRemaining()

然後,您可以使用一個小的固定大小的中間字節數組和基於數組的get()put()方法來傳輸「塊」字節,根據剩餘的數量調整放入中間緩衝區的字節數空間。

+0

謝謝,這是我會做的.. – bennyl