BufferedReader readLine返回值在scala中不被理解为字符串?

jav*_*dba 1 scala bufferedreader

虽然我意识到有一些原生的scala方法可以做到以下几点,但是理解这种行为会很有见地.

对于以下代码片段,for循环迭代器不正确:

val br = new BufferedReader(new FileReader("/tmp/test.txt"))
val stdin = new FileOutputStream("/tmp/x.txt")
for (line : String <- br.readLine) {
  //    val mys = new String(line)
  stdin.write(line)
  stdin.write('\n')
}
Run Code Online (Sandbox Code Playgroud)

迭代器行给出以下编译错误:

scrutinee is incompatible with pattern type;
 found   : String
 required: Char
    for (line : String <- br.readLine) {

            ^
Run Code Online (Sandbox Code Playgroud)

Shy*_*nki 5

br.readLine返回一个String,map对String 的操作起作用Char

for { line <- br.readLine }

和...一样

br.readLine.map { line =>

你可以这样写:

val br = new BufferedReader(new FileReader("/tmp/test.txt"))
val outfile = new FileOutputStream("/tmp/x.txt")

var line:String = ""

while ({ line = br.readLine() ; line != null } ) {

   outfile.write(line.getBytes)
   outfile.write('\n')
}
Run Code Online (Sandbox Code Playgroud)