我有一个在 Java 中使用的方便函数,用于将 InputStream 转换为字符串。以下是 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
,将整个内容读入字节数组,然后直接从中创建一个字符串。
关于string - 在 Scala 中将输入流转换为字符串的惯用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5221524/