This duplicate buffer thing can be a very useful tool to avoid making unnecessary copies of in-memory data. The slice() and asIntBuffer(), asCharBuffer(), etc, methods all work in the same way. On the flip side, if you take a small slice from a larger buffer and never use the rest, you may end up holding on to more memory than you have to.
Barend On Thu, Oct 2, 2008 at 11:40 PM, W.B. Garvelink <[EMAIL PROTECTED]> wrote: > Hi Andres, > > > Yep, there's another way, and I'll admit I was hoping you'd ask ;-). > Take a look at the ByteBuffer.duplicate() method: > >> Creates a new byte buffer that shares this buffer's content. >> >> The content of the new buffer will be that of this buffer. Changes >> to this buffer's content will be visible in the new buffer, and >> vice versa; the two buffers' position, limit, and mark values will >> be independent. >> >> The new buffer's capacity, limit, position, and mark values will >> be identical to those of this buffer. > > You can create a second ByteBuffer "view" on the same in-memory data, use one > to your reads and the other to do your writes. They both start at the > same position and they both have the same limit, so if you read from one and > write > to the other within the loop body, they stay in sync. >
