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

Java — InputStream для чтения

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

Задача: Сумма двух чисел

Напишите функцию twoSum. Которая получает массив целых чисел nums и целую сумму target, а возвращает индексы двух чисел, сумма которых равна target. Любой набор входных данных имеет ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Ответ можно возвращать в любом порядке...

ANDROMEDA

В этом кратком руководстве мы рассмотрим преобразование InputStream в Reader с использованием Java, затем Guava и, наконец, Apache Commons IO.

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

1. С Java

Во-первых, давайте посмотрим на простое решение Java — с использованием легкодоступного InputStreamReader :

@Test
public void givenUsingPlainJava_whenConvertingInputStreamIntoReader_thenCorrect()
throws IOException {
InputStream initialStream = new ByteArrayInputStream("With Java".getBytes());

Reader targetReader = new InputStreamReader(initialStream);

targetReader.close();
}

2. С гуавой

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

@Test
public void givenUsingGuava_whenConvertingInputStreamIntoReader_thenCorrect()
throws IOException {
InputStream initialStream = ByteSource.wrap("With Guava".getBytes()).openStream();

byte[] buffer = ByteStreams.toByteArray(initialStream);
Reader targetReader = CharSource.wrap(new String(buffer)).openStream();

targetReader.close();
}

Обратите внимание, что решение Java проще, чем этот подход.

3. С вводом-выводом Commons

Наконец — решение с использованием Apache Commons IO — также с промежуточной строкой:

@Test
public void givenUsingCommonsIO_whenConvertingInputStreamIntoReader_thenCorrect()
throws IOException {
InputStream initialStream = IOUtils.toInputStream("With Commons IO");

byte[] buffer = IOUtils.toByteArray(initialStream);
Reader targetReader = new CharSequenceReader(new String(buffer));

targetReader.close();
}

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