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)
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)