В этом кратком руководстве мы собираемся преобразовать простой массив байтов в Reader
, используя обычную Java, Guava и, наконец, библиотеку ввода-вывода Apache Commons.
Эта статья является частью серии «Java — Back to Basic» здесь, на ForEach.
1. С простой 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, также используя промежуточную строку:
@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 .