How do I read / convert an InputStream into a String in Java?

inputstream, io, java, stream, string

Solution

A nice way to do this is using Apache Commons `IOUtils` to copy the `InputStream` into a `StringWriter`... Something like

StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, encoding);
String theString = writer.toString();

or even

// NB: does not close inputStream, you'll have to use try-with-resources for that
String theString = IOUtils.toString(inputStream, encoding);

Alternatively, you could use `ByteArrayOutputStream` if you don't want to mix your Streams and Writers.

Problem

If you have a `java.io.InputStream` object, how should you process that object and produce a `String`? Suppose I have an `InputStream` that contains text data, and I want to convert it to a `String`, so for example I can write that to a log file. What is the easiest way to take the `InputStream` and convert it to a `String`? ``` public String convertStreamToString(InputStream is) { // ??? } ```

Original source

Related problems