Idiomatic way to convert an InputStream to a String in Scala
Solution 1:
For Scala >= 2.11
scala.io.Source.fromInputStream(is).mkString
For Scala < 2.11:
scala.io.Source.fromInputStream(is).getLines().mkString("\n")
does pretty much the same thing. Not sure why you want to get lines and then glue them all back together, though. If you can assume the stream's nonblocking, you could just use .available
, read the whole thing into a byte array, and create a string from that directly.
Solution 2:
Source.fromInputStream(is).mkString("")
will also do the deed.....
Solution 3:
Faster way to do this:
private def inputStreamToString(is: InputStream) = {
val inputStreamReader = new InputStreamReader(is)
val bufferedReader = new BufferedReader(inputStreamReader)
Iterator continually bufferedReader.readLine takeWhile (_ != null) mkString
}