«В этом кратком руководстве мы собираемся преобразовать простой массив байтов в Reader, используя обычную Java, Guava и, наконец, библиотеку ввода-вывода Apache Commons.

Эта статья является частью серии «Java — Back to Basic» здесь, на Baeldung.

1. С Plain Java

Давайте начнем с простого примера Java, выполняя преобразование через промежуточную строку:

@Test
public void givenUsingPlainJava_whenConvertingByteArrayIntoReader_thenCorrect() 
  throws IOException {
    byte[] initialArray = "With Java".getBytes();
    Reader targetReader = new StringReader(new String(initialArray));
    targetReader.close();
}

Альтернативным подходом может быть использование InputStreamReader и ByteArrayInputStream: ~~ ~

@Test
public void givenUsingPlainJava2_whenConvertingByteArrayIntoReader_thenCorrect() 
  throws IOException {
    byte[] initialArray = "Hello world!".getBytes();
    Reader targetReader = new InputStreamReader(new ByteArrayInputStream(initialArray));
    targetReader.close();
}

2. С Guava

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

@Test
public void givenUsingGuava_whenConvertingByteArrayIntoReader_thenCorrect() 
  throws IOException {
    byte[] initialArray = "With Guava".getBytes();
    String bufferString = new String(initialArray);
    Reader targetReader = CharSource.wrap(bufferString).openStream();
    targetReader.close();
}

К сожалению, утилита Guava ByteSource не допускает прямого преобразования, поэтому нам все еще нужно использовать промежуточное строковое представление.

3. С Apache Commons IO

Аналогично — Commons IO также использует промежуточное строковое представление для преобразования byte[] в Reader:

@Test
public void givenUsingCommonsIO_whenConvertingByteArrayIntoReader_thenCorrect() 
  throws IOException {
    byte[] initialArray = "With Commons IO".getBytes();
    Reader targetReader = new CharSequenceReader(new String(initialArray));
    targetReader.close();
}

Вот и все — 3 простых способы преобразования массива байтов в Java Reader. Обязательно ознакомьтесь с образцом на GitHub.