HOWTO · Java
Converter String em InputStream em Java
Este artigo mergulha nas várias formas que podemos utilizar para converter uma String para uma InputStream em Java
Nesta página
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