Converter um InputStream em uma string em Java

  1. Utilize a API Stream para converter um InputStream para uma String
  2. Utilize ByteArrayOutputStream para ler ou converter um InputStream em String
  3. Utilize IOUtils.toString do Apache Commons para Ler ou Converter um InputStream para uma String

Neste tutorial, falaremos sobre como converter um InputStream para uma String em Java. Um InputStream é um fluxo de bytes que pode ser utilizado para realizar várias tarefas como a leitura. Em geral, é uma classe que contém tudo em bytes. Se quisermos converter este fluxo de bytes para qualquer outro tipo de dados, poderemos ter de utilizar métodos específicos.

Aqui vamos percorrer as várias maneiras pelas quais podemos ler ou converter um InputStream numa string em Java

Utilize a API Stream para converter um InputStream para uma String

Podemos converter um InputStream a uma string utilizando a API Stream que faz parte do Java 8. O InputStreamReader lê o inputStream e o BufferedReader().lines() ajuda-nos a converter este InputStream num fluxo de String. Como podemos ver, Collectors.joining() está a ser utilizado para juntar todas as strings no fluxo e depois retornar uma única string.

package com.company;

import org.apache.commons.io.IOUtils;
import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {

        try {
            InputStream inputStream = new FileInputStream("java/sampleFile.txt");

            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            Stream<String> streamOfString= new BufferedReader(inputStreamReader).lines();
            String streamToString = streamOfString.collect(Collectors.joining());

            System.out.println(streamToString);

        } catch (IOException e) {

            e.printStackTrace();
        }

    }
}

Resultado:

This is a sample text file

Utilize ByteArrayOutputStream para ler ou converter um InputStream em String

Sabemos que um InputStream é composto por bytes, e assim podemos ByteArrayOutputStream classe que converte o readInputStream num array de bytes. Depois disso, podemos converter este array de bytes numa String utilizando toString().

package com.company;

import java.io.*;

public class Main {

    public static void main(String[] args) {

        try {
            InputStream readInputStream = new FileInputStream("java/sampleFile.txt");

            String encoding = "UTF-8";

            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] byteSize = new byte[1024];

            int length;
            while ((length = readInputStream.read(byteSize)) != -1) {
                byteArrayOutputStream.write(byteSize, 0, length);
            }
          
            System.out.println(byteArrayOutputStream.toString(encoding));

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

Resultado:

This is a sample text file

Utilize IOUtils.toString do Apache Commons para Ler ou Converter um InputStream para uma String

Para facilitar a nossa tarefa, podemos utilizar a função IOUtils.toString incluída na biblioteca Apache Commons. Para utilizar a Biblioteca Apache Commons, podemos incluir esta dependência no nosso projecto.

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>

No exemplo abaixo, primeiro, criamos um InputStream que é um ficheiro de texto, e depois chamamos o método IOUtils.toString() que toma um InputStream e a codificação a utilizar para converter o fluxo. Estamos a utilizar a codificação UTF-8, que é universalmente utilizada.

package com.company;

import org.apache.commons.io.IOUtils;
import java.io.*;

public class Main {
    public static void main(String[] args) {

        try {
            InputStream inputStream = new FileInputStream("java/sampleFile.txt");
          
            String steamToString = IOUtils.toString(inputStream, "UTF-8");
            System.out.println(steamToString);

        } catch (IOException e) {
            e.printStackTrace();
        }
      
    }
}

Resultado:

This is a sample text file

Artigo relacionado - Java String

  • Como verificar se uma string contém uma string em Java
  • Como reverter uma string em Java
  • Artigo relacionado - Java Inputstream

  • Como converter uma string para Char em Java
  • Como verificar se uma string está vazia ou nula em Java