¿Cómo leer un InputStream a un String en Java?
¡Hola a todos! Acabo de empezar a estudiar Java y me encontré con un problema que me parece muy complicado. Necesito leer datos de un InputStream (por ejemplo, de un archivo o de una respuesta de una solicitud HTTP) y convertirlos en un String normal. El problema es que InputStream trabaja con bytes, pero yo necesito texto.
Aquí hay un ejemplo de mi código que no funciona:
```java
InputStream inputStream = new FileInputStream("file.txt");
String content = inputStream.read(); // Obviamente, esto está mal
```
Entiendo que el método `read()` devuelve solo un byte (int), no todo el String. Intenté usar `BufferedReader` e `InputStreamReader`, pero aún así estoy confundido. ¿Cómo leer correcta y eficientemente todo el InputStream a un String? ¿Cuáles son las best practices en Java 8+? ¡Gracias de antemano por la ayuda!
P.D. He oído sobre try-with-resources, pero no estoy seguro de cómo aplicarlo aquí. Y también: ¿es necesario cerrar el flujo después de leer? El flujo puede ser muy grande, de hasta varios megabytes.