Como ler um InputStream e convertê-lo para uma string em Java?
Olá a todos! Sou novo em Java e me deparei com a seguinte tarefa: tenho um objeto `InputStream`, que obtenho, por exemplo, ao ler um arquivo ou de uma requisição de rede. Preciso converter o conteúdo desse stream em uma string `String` comum para depois processar o texto.
O problema é que não sei como fazer isso corretamente. Tentei ler os bytes manualmente, mas o código fica complicado e, provavelmente, incorreto. Aqui está o que tentei:
```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();
```
Esse código funciona, mas tenho certeza de que existem soluções mais elegantes. Primeiro, ele não considera a codificação de caracteres. Segundo, em arquivos grandes, ele será lento, pois lê um byte por vez. Terceiro, ouvi dizer que no Java 9 e superiores surgiram novos métodos, mas não sei quais.