2012-05-31 1 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) 문제는 aMethodThatReturnsAFilledByteBuffer의 .get() 호출에서 발생합니다.) –

답변

0

당신은 이러한 종래 write() 같은 get() 동작을 암시하는 동작을 소스 버퍼 flip()해야하거나 또 다른 버퍼로 put() 연산의 소스로 사용. 나중에 상태를 복원하려면 compact()해야합니다.