Рубрики
Без рубрики

Java – Reader to Byte Array

Как преобразовать считыватель в байт[] с помощью простой Java, Guava или библиотеки Apache Commons IO.

Автор оригинала: Eugen Paraschiv.

Этот краткий учебник покажет, как преобразовать считыватель в байт[] с помощью простой Java, Guava и библиотеки Apache Commons IO.

Эта статья является частью серии “Java – Back to Basic” здесь, на Baeldung.

1. С помощью Java

Давайте начнем с простого решения Java – прохождения через промежуточную строку:

@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();
}

Обратите внимание, что чтение выполняется кусками, а не по одному символу за раз.

2. С Гуавой

Далее – давайте взглянем на решение Guava – также с использованием промежуточной строки:

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

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

    initialReader.close();
}

Обратите внимание, что мы используем встроенный API утилиты, чтобы не делать никаких низкоуровневых преобразований простого примера Java.

3. С Commons IO

И наконец – вот прямое решение, которое поддерживается из коробки с Commons IO:

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

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

    initialReader.close();
}

И вот оно – 3 быстрых способа преобразовать java Reader в байтовый массив. Обязательно проверьте образец на GitHub .