Java - Lecteur sur tableau d’octets

Java - Lecteur à Byte Array

Ce tutoriel rapide montrera commentconvert a Reader into a byte[] en utilisant Java, Guava et la bibliothèque Apache Commons IO.

Cet article fait partie dethe “Java – Back to Basic” series ici par exemple.

1. Avec Java

Commençons par la solution Java simple - en passant par une chaîne intermédiaire:

@Test
public void givenUsingPlainJava_whenConvertingReaderIntoByteArray_thenCorrect()
  throws IOException {
    Reader initialReader = new StringReader("With Java");

    char[] charArray = new char[8 * 1024];
    StringBuilder builder = new StringBuilder();
    int numCharsRead;
    while ((numCharsRead = initialReader.read(charArray, 0, charArray.length)) != -1) {
        builder.append(charArray, 0, numCharsRead);
    }
    byte[] targetArray = builder.toString().getBytes();

    initialReader.close();
}

Notez que la lecture se fait en morceaux, pas un caractère à la fois.

2. Avec goyave

Ensuite, jetons un coup d'œil à la solution Guava - en utilisant également une chaîne intermédiaire:

@Test
public void givenUsingGuava_whenConvertingReaderIntoByteArray_thenCorrect()
  throws IOException {
    Reader initialReader = CharSource.wrap("With Google Guava").openStream();

    byte[] targetArray = CharStreams.toString(initialReader).getBytes();

    initialReader.close();
}

Notez que nous utilisons l'API de l'utilitaire intégré pour ne pas avoir à effectuer la conversion de bas niveau de l'exemple Java simple.

3. Avec Commons IO

Et enfin, voici une solution directe qui est prise en charge dès le départ avec Commons IO:

@Test
public void givenUsingCommonsIO_whenConvertingReaderIntoByteArray_thenCorrect()
  throws IOException {
    StringReader initialReader = new StringReader("With Commons IO");

    byte[] targetArray = IOUtils.toByteArray(initialReader);

    initialReader.close();
}

Et là vous l'avez - 3 façons rapides de transformer un javaReader en un tableau d'octets.