import java.io.{File, FileNotFoundException, FileReader, IOException}
// try-catch-finally 确保流能正常关闭
/*
* 健壮性说明
* 1. 确保在读取文件过程中发生错误(例如IO阻塞)时,能确保 流被关闭
* 2. file为null,不报空指针异常
*
* */
object FileWriterTest extends App {
var reader: FileReader = _
try {
//1. 实例化File类对象,指明要操作的对象
val file: File = new File("sparkcore1/src/main/data/word.txt")
println(file.exists())
//2. 初始化FileReader
reader = new FileReader(file)
//3. 读取数据
// read方法 按指定编码读取一个字符,并返回字符对应的int值,当没有数据时,返回-1
// 一个字符一个字符的读取
// 如果这块遇到错误,流将无法关闭,可能造成内存泄漏
var i = reader.read()
while (i != -1) {
print(i.toChar)
i = reader.read()
//1/0
}
}
catch {
case e: IOException => e.printStackTrace()
case e1: FileNotFoundException => println("未找到文件,请创建")
} finally {
//当 file 不存在时,reader为null,会报空指针异常
//4. 关闭流!!!
if (reader != null) {
try {
println("完成")
reader.close()
} catch {
case e: FileNotFoundException => e.printStackTrace()
}
}
}
}