将Scala中的所有BufferedReader行读入字符串

Kev*_*ith 24 scala bufferedreader

我怎样才能读取所有一中BufferedReader的线,并存储为一个字符串?

 val br = new BufferedReader(...)
 val str: String = getAllLines(br) // getAllLines() -- is where I need help
Run Code Online (Sandbox Code Playgroud)

与此问题类似.

joe*_*cii 54

这是我BufferedReader在Scala中处理的方式:

val br:BufferedReader = ???
val strs = Stream.continually(br.readLine()).takeWhile(_ != null)
Run Code Online (Sandbox Code Playgroud)

您将从阅读器中获得每行的字符串.如果你想要一个单独的字符串:

val str = Stream.continually(br.readLine()).takeWhile(_ != null).mkString("\n")
Run Code Online (Sandbox Code Playgroud)

  • "持续"的使用是辉煌的.我还不知道.谢谢! (2认同)
  • 我建议只根据[Java API docs](http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close())调用`BufferedReader.close()`.在使用数据之后一定要调用它,因为`Stream`是懒惰的.使用`mkString("\n")`的建议将强制评估`Stream`,例如`force`.但是如果你在`val strs = ...`行之后调用`close()`,你将无法读取任何行. (2认同)