Les tampons (buffers) sont des objets qui contiennent des données de différents types primitifs (byte, char, short, int, long, float et double).

  • ByteBuffer
  • CharBuffer
  • ShortBuffer
  • IntBuffer
  • LongBuffer
  • FloatBuffer
  • DoubleBuffer

Le tampon, le plus généralement utilisé, demeure l'objet ByteBuffer permettant de mainpuler aisément les données provenant des fichiers ou des sockets. Le tampon CharBuffer constituant une séquence de caractères est également couramment employé pour traiter des informations textuelles.

Il est évidemment possible de lire le contenu de ces objets, mais aussi d'y écrire des informations. Les tampons peuvent s'appuer sur des tableau d'octets, de caractères ou de nombres. Si tel est le cas, la méthode hasArray() retournerait true. D'ailleurs, le tableau est accessible via la méthode array().

if(tampon.hasArray()){
    byte[] octets = tampon.array();
}

Deux exceptions peuvent être levées si l'objet Buffer est en lecture seule (ReadOnlyBufferException) et s'il n'est pas renforcé par un tableau (UnsupportedOperationException).

Exemple [voir]
package nio;

import java.nio.DoubleBuffer;
import java.nio.IntBuffer;

public class Tampons {
    public static void main(String[] args) throws Exception {
        int taille = 10;
        DoubleBuffer tampon_double = DoubleBuffer.allocate(taille);
        IntBuffer tampon_int = IntBuffer.allocate(taille);

        for (int i = 0; i < tampon_double.capacity(); i++) {
            tampon_int.put(i);
            double resultat = i * Math.pow(10, i);
            tampon_double.put(resultat);
        }

        tampon_int.flip();
        tampon_double.flip();

        while (tampon_double.hasRemaining() && tampon_int.hasRemaining()) {
            int entier = tampon_int.get();
            double resultat = tampon_double.get();
            System.out.println(
                    entier + " * Math.pow(10, " + entier + ") = " + resultat);
        }
    }
}
Sommaire