Se utiliza el método allocateDirect() de la clase java.nio.ByteBuffer . Asigna un nuevo búfer de byte directo.
La posición del nuevo búfer será cero, su límite será su capacidad, su marca será indefinida y cada uno de sus elementos se inicializará a cero. No se especifica si tiene o no una array de respaldo.
Este método es entre un 25 % y un 75 % más rápido que el método allocate().
Sintaxis:
public static ByteBuffer allocateDirect(int capacity)
Parámetros: Este método toma la capacidad, en bytes, como parámetro.
Valor devuelto: este método devuelve el nuevo búfer de bytes.
Excepción: este método lanza IllegalArgumentException , si la capacidad es un entero negativo.
A continuación se muestran los ejemplos para ilustrar el método allocateDirect():
Ejemplos 1:
// Java program to demonstrate // allocateDirect() method import java.nio.*; import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the ByteBuffer int capacity = 4; // Creating the ByteBuffer try { // creating object of ByteBuffer // and allocating size capacity ByteBuffer bb = ByteBuffer.allocateDirect(capacity); // creating byte array of size capacity byte[] value = { 20, 30, 40, 50 }; // wrap the byte array into ByteBuffer bb = ByteBuffer.wrap(value); // print the ByteBuffer System.out.println("Direct ByteBuffer: " + Arrays.toString(bb.array())); // print the state of the buffer System.out.print("\nState of the ByteBuffer : "); System.out.println(bb.toString()); } catch (IllegalArgumentException e) { System.out.println("Exception thrown : " + e); } catch (ReadOnlyBufferException e) { System.out.println("Exception thrown : " + e); } } }
Direct ByteBuffer: [20, 30, 40, 50] State of the ByteBuffer : java.nio.HeapByteBuffer[pos=0 lim=4 cap=4]
Ejemplos 2: Para mostrar IllegalArgumentException
// Java program to demonstrate // allocateDirect() method import java.nio.*; import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity // with negative value int capacity = -4; // Creating the ByteBuffer try { // creating object of ByteBuffer // and allocating size capacity System.out.println("Trying to allocate" + " negative value in ByteBuffer"); ByteBuffer bb = ByteBuffer.allocateDirect(capacity); // creating byte array of size capacity byte[] value = { 20, 30, 40, 50 }; // wrap the byte array into ByteBuffer bb = ByteBuffer.wrap(value); // print the ByteBuffer System.out.println("Direct ByteBuffer: " + Arrays.toString(bb.array())); // print the state of the buffer System.out.print("\nState of the ByteBuffer : "); System.out.println(bb.toString()); } catch (IllegalArgumentException e) { System.out.println("Exception thrown : " + e); } catch (ReadOnlyBufferException e) { System.out.println("Exception thrown : " + e); } } }
Trying to allocate negative value in ByteBuffer Exception thrown : java.lang.IllegalArgumentException: Negative capacity: -4
Publicación traducida automáticamente
Artículo escrito por RohitPrasad3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA