BufferedInputStream

BufferedInputStream est une classe qui fait partie du paquetage java.io et qui hérite de InputStream. Elle ne fait pas réellement d’entrées/sorties mais décore un autre InputStream, en ajoutant des fonctionnalités de buffering.

InputStream

On lit le contenu octet par octet.

File file = new File("data/example.txt");

byte[] result = new byte[(int) file.length()];
try (InputStream input = new FileInputStream(file)) {
    int currentByte;
    int pos = 0;
    while ((currentByte = input.read()) > 0) {
        result[pos++] = (byte) currentByte;
    }
}

System.out.println(new String(result));

La lecture octet par octet n’est pas performante. Autre solution, lire tout le contenu (JDK 9).

  result = input.readAllBytes();

ou un paquet (JDK 11)

  buffer = input.readNBytes(size);

Pour les plus anciens JDK

  byte[] buffer = new byte[size];
  input.read(buffer);