Mam przydatną funkcję, której używałem w Javie do konwersji InputStream na String. Oto bezpośrednie tłumaczenie na Scala:
def inputStreamToString(is: InputStream) = {
val rd: BufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8"))
val builder = new StringBuilder()
try {
var line = rd.readLine
while (line != null) {
builder.append(line + "\n")
line = rd.readLine
}
} finally {
rd.close
}
builder.toString
}
Czy istnieje idiomatyczny sposób na zrobienie tego w scali?
string
scala
inputstream
bballant
źródło
źródło
Source.fromInputStream(is).mkString("")
również zrobi czyn .....źródło
Iterator[Char]
.Source.fromInputStream(is)(Codec.UTF8).mkString
fromInputStream()
wydaje się zamykać strumień, przynajmniej w Scali 2.11.Szybszy sposób na zrobienie tego:
źródło
Reader
plikInputStream
.inputStreamReader
do metody.Runtime.exec()
. To gwoździ.