Java: Como criar um InputStream a partir de uma String


A forma mais rápida para criar um InputStream a partir de uma String é criando uma instancia da classe ByteArrayInputStream.

Veja no código abaixo.

package br.com.dicasdejava.util;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;

public class InputStreamFromString {

    public static void main(String[] args) throws IOException {
        InputStream inputStream = new ByteArrayInputStream("Um texto qualquer".getBytes());
    }

}

O código acima cria um InputStream a partir de uma String.

A classe java.io.ByteArrayInputStream recebe um array de bytes em seu construtor. E nós podemos obter esse array de bytes através do método getBytes() da classe String.

Utilizando Apache Commons IO

Outra forma simples de converter uma String em InputStream é utilizando o método estático toInputStream da classe IOUtils da biblioteca Apache Commons IO.

Veja:

package br.com.dicasdejava.util;

import org.apache.commons.io.IOUtils;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;

public class InputStreamFromString {
    public static void main(String[] args) throws IOException {
        InputStream inputStream = IOUtils.toInputStream(initialString);
    }
}

Mas lembre-se que é necessário importar o Apache Commons IO no seu projeto.

Se você estiver utilizando o Maven, pode adicionar a dependência abaixo no seu pom.xml para utilizar todo o poder da biblioteca Apache Commons IO.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-io</artifactId>
    <version>1.3.2</version>
</dependency>

Referências:

  1. JavaDoc: String
  2. JavaDoc: ByteArrayInputStream
  3. JavaDoc: IOUtils