¿Para qué sirve ByteBuffer en Java? [cerrado]

Resuelto Aklin asked hace 13 años • 5 respuestas

¿ Cuáles son las aplicaciones de ejemplo para a ByteBufferen Java? Enumere cualquier escenario de ejemplo en el que se utilice esto.

Aklin avatar Jan 30 '11 12:01 Aklin
Aceptado

Esta es una buena descripción de sus usos y desventajas. Básicamente, lo utilizas siempre que necesitas realizar E/S rápidas de bajo nivel. Si fuera a implementar un protocolo TCP/IP o si estuviera escribiendo una base de datos (DBMS), esta clase sería útil.

kelloti avatar Jan 30 '2011 05:01 kelloti

La clase ByteBuffer es importante porque forma la base para el uso de canales en Java. La clase ByteBuffer define seis categorías de operaciones sobre buffers de bytes, como se indica en la documentación de Java 7 :

  • Métodos get y put absolutos y relativos que leen y escriben bytes individuales;

  • Métodos de obtención masiva relativa que transfieren secuencias contiguas de bytes desde este búfer a una matriz;

  • Métodos de colocación masiva relativa que transfieren secuencias contiguas de bytes desde una matriz de bytes o algún otro búfer de bytes a este búfer;

  • Métodos get y put absolutos y relativos que leen y escriben valores de otros tipos primitivos, traduciéndolos hacia y desde secuencias de bytes en un orden de bytes particular;

  • Métodos para crear búferes de visualización, que permiten ver un búfer de bytes como un búfer que contiene valores de algún otro tipo primitivo; y

  • Métodos para compactar , duplicar y dividir un búfer de bytes.

Example code : Putting Bytes into a buffer.

    // Create an empty ByteBuffer with a 10 byte capacity
    ByteBuffer bbuf = ByteBuffer.allocate(10);

    // Get the buffer's capacity
    int capacity = bbuf.capacity(); // 10

    // Use the absolute put(int, byte).
    // This method does not affect the position.
    bbuf.put(0, (byte)0xFF); // position=0

    // Set the position
    bbuf.position(5);

    // Use the relative put(byte)
    bbuf.put((byte)0xFF);

    // Get the new position
    int pos = bbuf.position(); // 6

    // Get remaining byte count
    int rem = bbuf.remaining(); // 4

    // Set the limit
    bbuf.limit(7); // remaining=1

    // This convenience method sets the position to 0
    bbuf.rewind(); // remaining=7
ykombinator avatar Jan 30 '2011 06:01 ykombinator