Converter String em InputStream em Java

Rupam Yadav 12 outubro 2023
  1. Utilize ByteArrayInputStream() para converter uma string para InputStream em Java
  2. Utilize StringReader e ReaderInputStream para converter uma string para um InputStream em Java
  3. Utilize org.apache.commons.io.IOUtils para converter uma string para um InputStream
Converter String em InputStream em Java

Falaremos sobre como converter uma string para um InputStream em Java utilizando vários métodos. Uma string é um array de caracteres, enquanto que um InputStream é um array de bytes. Vamos ver como podemos converter uma string para InputStream em Java.

Utilize ByteArrayInputStream() para converter uma string para InputStream em Java

O pacote E/S de Java tem a classe ByteArrayInputStream que lê as arrays de bytes como InputStream. Primeiro, utilizamos getBytes() para obter os bytes de exampleString com o charset UTF_8, e depois passamos para ByteArrayInputStream.

Para verificar se temos sucesso no nosso objectivo, podemos ler o inputStream utilizando read(), e converter cada byte a um char. Isto devolverá a nossa string original.

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

public class Main {
  public static void main(String[] args) throws IOException {
    String exampleString = "This is a sample string";

    InputStream inputStream =
        new ByteArrayInputStream(exampleString.getBytes(StandardCharsets.UTF_8));

    // To check if we can read the string back from the inputstream
    int i;
    while ((i = inputStream.read()) != -1) {
      char getSingleChar = (char) i;
      System.out.print(getSingleChar);
    }
  }
}

Resultado:

This is a sample string

Utilize StringReader e ReaderInputStream para converter uma string para um InputStream em Java

A segunda técnica para converter a string para InputStream utiliza dois métodos, StringReader e ReaderInputStream. O primeiro é utilizado para ler a string e embrulhá-la num reader, enquanto que o segundo leva dois argumentos, um reader e os charsets. Finalmente, obtemos o InputStream.

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.input.ReaderInputStream;

public class Main {
  public static void main(String[] args) throws IOException {
    String exampleString = "This is a sample string";

    StringReader stringReader = new StringReader(exampleString);

    InputStream inputStream = new ReaderInputStream(stringReader, StandardCharsets.UTF_8);

    // To check if we can read the string back from the inputstream
    int i;
    while ((i = inputStream.read()) != -1) {
      char getSingleChar = (char) i;
      System.out.print(getSingleChar);
    }
  }
}

Resultado:

This is a sample string

Utilize org.apache.commons.io.IOUtils para converter uma string para um InputStream

Podemos também utilizar a biblioteca Apache Commons para facilitar a nossa tarefa. A classe IOUtls desta biblioteca Apache Commons tem um método toInputStream() que leva um string e o charset a utilizar. Este método é o mais fácil de todos, pois só temos de chamar um único método para converter a string Java para InputStream.

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) throws IOException {
    String exampleString = "This is a sample string";

    InputStream is = IOUtils.toInputStream(exampleString, StandardCharsets.UTF_8);

    // To check if we can read the string back from the inputstream
    int i;
    while ((i = is.read()) != -1) {
      char getSingleChar = (char) i;
      System.out.print(getSingleChar);
    }
  }
}

Resultado:

This is a sample string
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java String