2012-05-31 3 views
0

Предположим, что у меня есть 2 ByteBuffer, содержащий несколько байтов в нем ... Как было бы лучшим способом добавить все содержимое одного ByteBuffer к другому? я это делаю, но он бросает BufferUnderFlowException:Как добавить один ByteBuffer к другому?

ByteBuffer allData = ByteBuffer.allocate(999999); 
ByteBuffer buff = null; 
for (int i = 0; i < n; i++) { 
    buff = aMethodThatReturnsAFilledByteBuffer(); 
    allData.put(buff); 
} 

Что я делаю не так? Спасибо заранее.

+0

Вы прочитали документацию? http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/ByteBuffer.html#put(java.nio.ByteBuffer) Проблема заключается в вызове .get() в aMethodThatReturnsAFilledByteBuffer () –

ответ

0

Вы должны flip() исходный буфер до любой операционной, подразумевающим get() операции, такие как write(), или использовать его в качестве источника put() операции в другой буфер. Вам также необходимо, чтобы после этого было compact(), чтобы восстановить его состояние.

Смежные вопросы