string - 在 Scala 中将输入流转换为字符串的惯用方法

标签 string scala inputstream

我有一个在 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/

相关文章:

c++ - 将字符串解析为 C 风格字符数组的结构

scala - 赋值循环的 for 理解顺序错误

Java 输入流到 Python (PY4J)

java - 文件管理 - 管理java文本文件

java - 如何从 inputFileStream 读取并分割每一行

c# - .NET 中 int 的字符串格式选项

java - Android:无法在原始类型 int 上调用 toString()

c++ - 在 iPhone 上将 utf-8 std::string 转换为 std::wstring

scala - 什么是可堆叠修改?

java - amchart - 使用相同 X 轴的多个 Y 轴