Convertir un InputStream en una cadena en Java
-
Usar la API de
Stream
para convertir unInputStream
en una cadena -
Usa
ByteArrayOutputStream
para leer o convertir un InputStream en cadena -
Usa
IOUtils.toString
de Apache Commons para leer o convertir un InputStream en unString
En este tutorial, hablaremos de cómo convertir un InputStream en un String en Java. Un InputStream es un flujo de bytes que puede ser utilizado para realizar varias tareas como la lectura. En general, es una clase que contiene todo en bytes. Si queremos convertir este flujo de bytes en cualquier otro tipo de datos, es posible que tengamos que utilizar métodos específicos.
Aquí veremos las diferentes formas en que podemos leer o convertir un InputStream
en una cadena en Java.
Usar la API de Stream
para convertir un InputStream
en una cadena
Podemos convertir un InputStream
en una cadena usando la API Stream
que es parte de Java 8. InputStreamReader
lee el InputStream
y el BufferedReader().lines()
nos ayuda a convertir este InputStream
en un flujo de String
. Como podemos ver, Collectors.joining()
se utiliza para unir todas las cadenas del flujo y luego devolver una sola cadena.
package com.company;
import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.io.IOUtils;
public class Main {
public static void main(String[] args) {
try {
InputStream inputStream = new FileInputStream("java/sampleFile.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
Stream<String> streamOfString = new BufferedReader(inputStreamReader).lines();
String streamToString = streamOfString.collect(Collectors.joining());
System.out.println(streamToString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
This is a sample text file
Usa ByteArrayOutputStream
para leer o convertir un InputStream en cadena
Sabemos que un InputStream
está compuesto de bytes, y por lo tanto podemos hacer una clase ByteArrayOutputStream
que convierte el readInputStream
en un array de bytes. Después de eso, podemos convertir este array de bytes en una cadena usando toString()
.
package com.company;
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
InputStream readInputStream = new FileInputStream("java/sampleFile.txt");
String encoding = "UTF-8";
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] byteSize = new byte[1024];
int length;
while ((length = readInputStream.read(byteSize)) != -1) {
byteArrayOutputStream.write(byteSize, 0, length);
}
System.out.println(byteArrayOutputStream.toString(encoding));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
This is a sample text file
Usa IOUtils.toString
de Apache Commons para leer o convertir un InputStream en un String
Para facilitarnos la tarea, podemos usar la función IOUtils.toString
incluida en la biblioteca de Apache Commons. Para usar la biblioteca Apache Commons, podemos incluir esta dependencia en nuestro proyecto.
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
En el siguiente ejemplo, primero, creamos un InputStream
que es un archivo de texto, y luego llamamos al método IOUtils.toString()
que toma un InputStream
y la codificación a usar para convertir el flujo. Estamos usando la codificación UTF-8, que es usada universalmente.
package com.company;
import java.io.*;
import org.apache.commons.io.IOUtils;
public class Main {
public static void main(String[] args) {
try {
InputStream inputStream = new FileInputStream("java/sampleFile.txt");
String steamToString = IOUtils.toString(inputStream, "UTF-8");
System.out.println(steamToString);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Resultado:
This is a sample text file
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedInArtículo relacionado - Java String
- Cómo eliminar la subcadena de la cadena en Java
- Cómo realizar una conversión de cadena a cadena en Java
- Cómo convertir un array de bytes en una cadena hexadecimal en Java
- Cómo convertir una cadena de Java en un byte
- Generar cadena aleatoria en Java
- El método Swap en Java