«В этом кратком руководстве мы собираемся преобразовать простой массив байтов в 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.