Convertir cadena a InputStream en Java

Rupam Yadav 12 octubre 2023
  1. Usa ByteArrayInputStream() para convertir una cadena en InputStream en Java
  2. Usa StringReader y ReaderInputStream para convertir una cadena en un InputStream en Java
  3. Usa org.apache.commons.io.IOUUtils para convertir una cadena en un InputStream
Convertir cadena a InputStream en Java

Hablaremos de cómo convertir una cadena en un InputStream en Java usando varios métodos. Una cadena es un conjunto de caracteres, mientras que un InputStream es un conjunto de bytes. Veamos cómo podemos convertir una cadena en InputStream en Java.

Usa ByteArrayInputStream() para convertir una cadena en InputStream en Java

El paquete de I/O de Java tiene la clase ByteArrayInputStream que lee los arrays de bytes como InputStream. Primero, usamos getBytes() para obtener los bytes de exampleString con el juego de caracteres UTF_8, y luego lo pasamos a ByteArrayInputStream.

Para comprobar si tenemos éxito en nuestro objetivo, podemos leer el inputStream usando read(), y convertir cada byte en un char. Esto devolverá nuestra cadena 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

Usa StringReader y ReaderInputStream para convertir una cadena en un InputStream en Java

La segunda técnica para convertir la cadena en InputStream utiliza dos métodos, StringReader y ReaderInputStream. El primero se usa para leer la cadena y envolverla en un reader mientras que el segundo toma dos argumentos, un reader y los charsets. Al final, obtenemos el 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

Usa org.apache.commons.io.IOUUtils para convertir una cadena en un InputStream

También podemos usar la biblioteca de Apache Commons para facilitar nuestra tarea. La clase IOUtls de esta biblioteca de Apache Commons tiene un método toInputStream() que toma una cadena y el juego de caracteres a utilizar. Este método es el más fácil de todos, ya que sólo tenemos que llamar a un único método para convertir la cadena de Java en 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

Artículo relacionado - Java String

Artículo relacionado - Java InputStream