Concat在Java中使用两个ByteBuffers

mcf*_*oft 9 java bytebuffer

如何将两个ByteBuffers连接到一个ByteBuffer?

以下不起作用:

    ByteBuffer bb = ByteBuffer.allocate(100);
    ByteBuffer bb2 = ByteBuffer.allocate(200);
    bb.allocate(200).put(bb2);
    System.out.println(bb.array().length);
Run Code Online (Sandbox Code Playgroud)

长度bb仍然是100.

Mar*_*o13 9

就像是

bb = ByteBuffer.allocate(300).put(bb).put(bb2);
Run Code Online (Sandbox Code Playgroud)

应该做的工作:创建一个足够大的缓冲区来保存两个缓冲区的内容,然后使用相对的put方法用第一个和第二个缓冲区填充它.(put顺便说一下,该方法返回调用该方法的实例)

  • **警告:**`position`和`limit`都将设置为`capacity`,如果你要进一步处理生成的`ByteBuffer`,这可能不是你所期望或想要的**.你需要调用`.flip()`以便能够通过在末尾添加`.flip();`来处理返回的`ByteBuffer`的全部内容. (4认同)