Avatar ·

Cómo leer un InputStream y convertirlo a String en Java?

¡Hola a todos! Soy nuevo en Java y me encontré con esta tarea: tengo un objeto `InputStream` que obtengo, por ejemplo, al leer un archivo o desde una solicitud de red. Necesito convertir el contenido de este flujo en una cadena `String` normal para luego procesar el texto. El problema es que no sé cómo hacerlo correctamente. Intenté leer los bytes manualmente, pero el código resulta engorroso y probablemente incorrecto. Esto es lo que probé: ```java InputStream inputStream = new FileInputStream("file.txt"); StringBuilder sb = new StringBuilder(); int data = inputStream.read(); while (data != -1) { sb.append((char) data); data = inputStream.read(); } inputStream.close(); String result = sb.toString(); ``` Este código funciona, pero estoy seguro de que hay soluciones más elegantes. Primero, no tiene en cuenta la codificación de caracteres. Segundo, en archivos grandes será lento porque lee byte por byte. Tercero, he oído que en Java 9 y superiores aparecieron nuevos métodos, pero no sé