Java - matriz de bytes para o leitor

Java - matriz de bytes para o leitor

Neste tutorial rápido, vamos converter umbyte array to a Reader simples usando Java puro, Guava e, finalmente, a biblioteca Apache Commons IO.

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

1. Com Plain Java

Vamos começar com o exemplo simples de Java, fazendo a conversão por meio de uma String intermediária:

@Test
public void givenUsingPlainJava_whenConvertingByteArrayIntoReader_thenCorrect()
  throws IOException {
    byte[] initialArray = "With Java".getBytes();
    Reader targetReader = new StringReader(new String(initialArray));
    targetReader.close();
}

Uma abordagem alternativa seria usar umInputStreamReadere umByteArrayInputStream:

@Test
public void givenUsingPlainJava2_whenConvertingByteArrayIntoReader_thenCorrect()
  throws IOException {
    byte[] initialArray = "Hello world!".getBytes();
    Reader targetReader = new InputStreamReader(new ByteArrayInputStream(initialArray));
    targetReader.close();
}

2. Com goiaba

A seguir - vamos dar uma olhada na solução Guava, também usando uma String intermediária:

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

Infelizmente, o utilitário GuavaByteSource não permite uma conversão direta, então ainda precisamos usar a representação String intermediária.

3. Com Apache Commons IO

Da mesma forma - Commons IO também usa uma representação de string intermediária para converterbyte[] em um leitor:

@Test
public void givenUsingCommonsIO_whenConvertingByteArrayIntoReader_thenCorrect()
  throws IOException {
    byte[] initialArray = "With Commons IO".getBytes();
    Reader targetReader = new CharSequenceReader(new String(initialArray));
    targetReader.close();
}

E aí está - 3 maneiras simples deconvert the byte array into a Java Reader.