Convertir une chaîne de caractères en InputStream en Java
-
Utilisez
ByteArrayInputStream()
pour convertir une chaîne de caractères enInputStream
en Java -
Utilisez
StringReader
etReaderInputStream
pour convertir une chaîne de caractères enInputStream
en Java -
Utilisez
org.apache.commons.io.IOUtils
pour convertir une chaîne de caractères en unInputStream
Nous parlerons de la manière de convertir une chaîne de caractères en un InputStream
en Java en utilisant plusieurs méthodes. Une chaîne de caractères est un ensemble de caractères, tandis qu’un InputStream
est un ensemble d’octets. Voyons comment nous pouvons convertir une chaîne de caractères en InputStream
en Java.
Utilisez ByteArrayInputStream()
pour convertir une chaîne de caractères en InputStream
en Java
Le paquet d’entrées/sorties de Java a la classe ByteArrayInputStream
qui lit les tableaux d’octets comme InputStream
. Tout d’abord, nous utilisons getBytes()
pour récupérer les octets de exampleString
avec le jeu de caractères UTF_8, et ensuite nous les passons à ByteArrayInputStream
.
Pour vérifier si nous avons atteint notre objectif, nous pouvons lire le inputStream
en utilisant read()
, et convertir chaque byte
en char
. Cela nous renverra notre chaîne de caractères originale.
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);
}
}
}
Production :
This is a sample string
Utilisez StringReader
et ReaderInputStream
pour convertir une chaîne de caractères en InputStream
en Java
La seconde technique pour convertir la chaîne en InputStream
utilise deux méthodes, StringReader
et ReadInputStream
. La première est utilisée pour lire la chaîne et l’envelopper dans un reader
tandis que la seconde prend deux arguments, un reader
et les charsets
. Enfin, on obtient le 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);
}
}
}
Production :
This is a sample string
Utilisez org.apache.commons.io.IOUtils
pour convertir une chaîne de caractères en un InputStream
Nous pouvons également utiliser la bibliothèque Apache Commons pour nous faciliter la tâche. La classe IOUtls
de cette bibliothèque Apache Commons a une méthode toInputStream()
qui prend une chaîne de caractères et le charset à utiliser. Cette méthode est la plus simple de toutes car nous n’avons qu’à appeler une seule méthode pour convertir la chaîne 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);
}
}
}
Production :
This is a sample string
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