Java - InputStream to Reader

Java - InputStream to Reader

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

Эта статья является частьюthe “Java – Back to Basic” series здесь для примера.

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. С гуавой

Далее - давайте посмотрим наthe Guava solution - используя промежуточный байтовый массив и строку:

@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 IO

Наконец - решение с использованием 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 быстрых способа преобразовать входной поток в JavaReader.