Avatar ·

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.