scala中用java的io流api读取while死循环
问题描述:使用下面代码时,出现while死循环
//读取文件
val br = new BufferedReader(new FileReader(path))
var len = ""
while ((len=br.readLine()) != null) {
println(len)
}
原因是:
(len = r)在scala中被认为是一个表达式,返回值是Unit,值是()
Unit和null比较always is true,所以产生死循环
解决方案:
//读取文件
val br = new BufferedReader(new FileReader(path))
//设一个标记
var flag = true
while (flag) {
val len = br.readLine()
//if判断,满足条件,改变标记值,下回跳出循环
if (len == null) {
flag = false
}
println(len)
}
}