Перейти к основному содержимому

Java — массив байтов для чтения

· 2 мин. чтения

Задача: Наибольшая подстрока палиндром

Для заданной строки s, верните наибольшую подстроку палиндром входящую в s. Подстрока — это непрерывная непустая последовательность символов внутри строки. Стока является палиндромом, если она читается одинаково в обоих направлениях...

ANDROMEDA 42

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