Java, как преобразовать InputStream в String?

У меня есть объект java.io.InputStream, как можно его преобразовать в String?

Предположим, что в InputStream содержатся только текстовые данные, какой самый простой способ
его преобразования в String?

Здесь можно использовать стандартную библиотеку Java (при этом нужно обратить внимание, что поток не закрыт).

static String convertStreamToString(java.io.InputStream is) 
{
    java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
    return s.hasNext() ? s.next() : "";
}

Так будет работать потому что Scanner перебирает токены в потоке, и в этом случае мы разделяем токены, используя "начало входной границы" (\ A), что дает нам только один токен для всего содержимого потока.

Также если Вам нужно использовать определённую кодировку, тогда передайте конструктору Scanner
вторым аргументом в Обратите внимание: если вам нужно быть конкретным в отношении кодировки входного потока, вы можете передать второй аргумент конструктору Scanner через который и указать необходимую кодировку (например, "UTF-8").

спасибо!