Concat two ByteBuffers in Java

mcfly soft picture mcfly soft · Apr 22, 2014 · Viewed 16.2k times · Source

How can I concat two ByteBuffers to one ByteBuffer?

The following doesn't work:

    ByteBuffer bb = ByteBuffer.allocate(100);
    ByteBuffer bb2 = ByteBuffer.allocate(200);
    bb.allocate(200).put(bb2);
    System.out.println(bb.array().length);

The length of bb is still 100.

Answer

Marco13 picture Marco13 · Apr 22, 2014

Something like

bb = ByteBuffer.allocate(300).put(bb).put(bb2);

should do the job: Create a buffer that is large enough to hold the contents of both buffers, and then use the relative put-methods to fill it with the first and the second buffer. (The put method returns the instance that the method was called on, by the way)