Convertir ByteBuffer a byte array java
arrays bytearray (3)
Esta pregunta ya tiene una respuesta aquí:
- Obtiene una matriz de bytes de un ByteBuffer en java 6 respuestas
¿Alguien sabe cómo convertir ByteBuffer a byte [] array? Necesito obtener una matriz de bytes de mi ByteBuffer
. Cuando ejecuto bytebuffer.hasArrray()
devuelve no. Cada pregunta que busqué hasta ahora es la conversión de la matriz de bytes a byteBuffer, pero la necesito al revés. Gracias.
La muestra simple funciona.
ByteBuffer bb1 = ByteBuffer.wrap("hello world".getBytes());
System.out.println(bb1.hasArray());
System.out.println(new String(bb1.array()));
Sin embargo, usted dice que la matriz devuelve false. Puede ser su lectura solamente.
/**
* Tells whether or not this buffer is backed by an accessible byte
* array.
*
* <p> If this method returns <tt>true</tt> then the {@link #array() array}
* and {@link #arrayOffset() arrayOffset} methods may safely be invoked.
* </p>
*
* @return <tt>true</tt> if, and only if, this buffer
* is backed by an array and is not read-only
*/
public final boolean hasArray() {
return (hb != null) && !isReadOnly;
}
Si hasArray()
informa que es false
, al llamar a array()
se lanzará una excepción.
En ese caso, la única manera de obtener los datos en un byte[]
es asignar un byte[]
y copiar los bytes en el byte[]
utilizando get(byte)
o similar.
ByteBuffer
expone el método de get(byte[])
masiva get(byte[])
que transfiere bytes del búfer a la matriz. Tendrá que crear una instancia de una matriz de longitud igual al número de bytes restantes en el búfer.
ByteBuffer buf = ...
byte[] arr = new byte[buf.remaining()];
buf.get(arr);