60

Does anyone know how to convert ByteBuffer to byte[] array? I need to get byte array from my ByteBuffer. When I run bytebuffer.hasArray() it returns no. Every question I looked so far is converting byte array to byteBuffer, but I need it other way around. Thank you.

Axel Fontaine
  • 34,542
  • 16
  • 106
  • 137
Powisss
  • 1,072
  • 3
  • 9
  • 16

2 Answers2

129

ByteBuffer exposes the bulk get(byte[]) method which transfers bytes from the buffer into the array. You'll need to instantiate an array of length equal to the number of remaining bytes in the buffer.

ByteBuffer buf = ...
byte[] arr = new byte[buf.remaining()];
buf.get(arr);
Lii
  • 11,553
  • 8
  • 64
  • 88
nomis
  • 2,545
  • 1
  • 14
  • 15
9

If hasArray() reports false then, calling array() will throw an exception.

In that case, the only way to get the data in a byte[] is to allocate a byte[] and copy the bytes to the byte[] using get(byte[]) or similar.

Stephen C
  • 698,415
  • 94
  • 811
  • 1,216