[英]Idiomatic way to convert an InputStream to a String in Scala
我有一個方便的函數,我在Java中用於將InputStream轉換為String。 這是對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
}
在scala中有沒有慣用的方法呢?
對於Scala> = 2.11
scala.io.Source.fromInputStream(is).mkString
對於Scala <2.11:
scala.io.Source.fromInputStream(is).getLines().mkString("\n")
幾乎完全相同的事情。 不知道為什么你想要獲得線條,然后將它們全部粘合在一起。 如果您可以假設流的非阻塞,您可以使用.available
,將整個內容讀入字節數組,並直接從中創建字符串。
Source.fromInputStream(is).mkString("")
也會做這件事......
更快的方法:
private def inputStreamToString(is: InputStream) = {
val inputStreamReader = new InputStreamReader(is)
val bufferedReader = new BufferedReader(inputStreamReader)
Iterator continually bufferedReader.readLine takeWhile (_ != null) mkString
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.