Java - InputStream para o Reader

Java - InputStream para o Reader

Neste tutorial rápido, vamos dar uma olhada emconverting an InputStream to a Reader usando Java, depois Guava e finalmente Apache Commons IO.

Este artigo faz parte dethe “Java – Back to Basic” series aqui no exemplo.

1. Com Java

Primeiro, vamos dar uma olhada na solução Java simples - usando oInputStreamReader prontamente disponível:

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

    Reader targetReader = new InputStreamReader(initialStream);

    targetReader.close();
}

2. Com goiaba

A seguir - vamos dar uma olhada emthe Guava solution - usando uma matriz de bytes intermediária e String:

@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();
}

Observe que a solução Java é mais simples que essa abordagem.

3. Com Commons IO

Finalmente - a solução usando o Apache Commons IO - também usando uma String intermediária:

@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();
}

E aí está - 3 maneiras rápidas de converter o fluxo de entrada em JavaReader.