Clase java.nio.Buffer en Java

La clase Buffer proporciona un búfer o un contenedor para fragmentos de datos de tipos primitivos específicos. Una secuencia finita de elementos se almacena linealmente en un búfer.

Las propiedades importantes de un búfer que lo hacen conveniente para realizar operaciones de lectura y escritura en los datos son:

  • Capacidad: esta propiedad determina el número máximo de elementos que pueden estar en un búfer.
  • Límite: esta propiedad determina el límite de los datos que se pueden leer o escribir proporcionando el índice de los elementos.
  • Posición: esta propiedad determina la ubicación del elemento actual en el búfer.

Sintaxis: declaración de clase

public abstract class Buffer extends Object

La clase de búfer proporciona una subclase para cada uno de los siguientes tipos de datos de búfer, como ByteBuffer, MappedByteBuffer, CharBuffer, DoubleBuffer, FloatBuffer, IntBuffer, LongBuffer, ShortBuffer. La clase de búfer hereda los siguientes métodos de la clase java.lang.Object, como clone(), finalizar(), getClass(), hashCode(), notificar(), notificar a todos(), toString(), wait(). Ahora, pasar a los métodos de la clase Buffer es el siguiente, como se muestra alfabéticamente en el formato tabular que se muestra a continuación:

Método Descripción
formación() Este método devuelve la array que respalda este búfer
arrayDesplazamiento() Este método devuelve el desplazamiento dentro de la array de respaldo de este búfer del primer elemento del búfer 
capacidad() Este método devuelve la capacidad de este búfer.
clear() Este método borra este búfer.
dar la vuelta() Este método voltea este búfer.
tieneArray() Este método indica si este búfer está respaldado o no por una array accesible.
tieneRestante() Este método indica si hay algún elemento entre la posición actual y el límite.
esDirecto() Este método indica si este búfer es directo o no.
es solo lectura() Este método indica si este búfer es de solo lectura o no.
límite() Este método devuelve el límite de este búfer.
límite(int nuevoLímite) Este método establece el límite de este búfer.
Marcos() Este método establece la marca de este búfer en su posición.
posición() Este método devuelve la posición de este búfer.
position(int newPosition) Este método establece la posición de este búfer.
restante() Este método devuelve el número de elementos entre la posición actual y el límite.
Reiniciar() Este método restablece la posición de este búfer a la posición marcada previamente.
rebobinar() Este método rebobina este búfer.

Implementación: clase de búfer y sus métodos

Ejemplo 1

Java

// Java program to demonstrate Buffer Class
 
// Importing required libraries
import java.nio.*;
import java.util.*;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Declaring the capacity of the ByteBuffer
        int capacity = 5;
 
        // Try block to check for exceptions
        try {
 
            // Creating the ByteBuffer
 
            // Creating object of ByteBuffer class and
            // allocating size capacity
            ByteBuffer bufferObj
                = ByteBuffer.allocate(capacity);
 
            // Putting the int to byte typecast
            // value in ByteBuffer using put() method
 
            // Custom input entries
            bufferObj.put((byte)10);
            bufferObj.put((byte)20);
            bufferObj.put((byte)30);
            bufferObj.put((byte)40);
            bufferObj.put((byte)50);
 
            // Typecasting ByteBuffer into Buffer
            Buffer bufferObj1 = (Buffer)bufferObj;
 
            // Getting array that backs this buffer
            // using array() method
            byte[] arr = (byte[])bufferObj1.array();
 
            // Display message only
            System.out.print(" The array is : [");
 
            // Print the array
            for (int i = 0; i < arr.length; i++)
                System.out.print(" " + arr[i]);
            System.out.print(" ]");
        }
 
        // Catch block to handle the exception
        catch (ReadOnlyBufferException e) {
 
            // Print message where exception occurred
            // is displayed on console
            System.out.println("Exception throws: " + e);
        }
    }
}
Producción

 The array is : [ 10 20 30 40 50 ]

Ejemplo 2

Java

// Java program to demonstrate Buffer class
 
// Importing required libraries
import java.nio.*;
import java.util.*;
 
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
 
        // try block to check for exceptions
        try {
 
            // Creating and initializing byte array
            // with custom elements
            byte[] barr = { 10, 20, 30, 40, 50 };
 
            // Creating object of ByteBuffer class
            // and allocating size capacity
            ByteBuffer bufferObj = ByteBuffer.wrap(barr);
 
            // Typecasting ByteBuffer into Buffer
            Buffer bufferObj1 = (Buffer)bufferObj;
 
            // now trying to set the position at index 2
            bufferObj1.position(2);
 
            // Setting this buffer mark position
            // using mark() method
            bufferObj1.mark();
 
            // Again trying to set the position at index 4
            bufferObj1.position(5);
 
            // Display the position
            System.out.println("position before reset: "
                               + bufferObj1.position());
 
            // Now trying to call clear() to restore
            // to the position at index 0 by discarding the
            // mark
            bufferObj1.clear();
 
            // Print and display the position
            System.out.println("position after reset: "
                               + bufferObj1.position());
        }
 
        // Catch block to handle the exception
        catch (InvalidMarkException e) {
 
            // Display message to be showcase when exception
            // occurred
            System.out.println(
                "new position is less than "
                + "the position we marked before ");
 
            // Print the exception on the console
            // along with display message
            System.out.println("Exception throws: " + e);
        }
    }
}
Producción

position before reset: 5
position after reset: 0

Publicación traducida automáticamente

Artículo escrito por surbhityagi15 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *