实现了Closeable接口的对象可调用use函数
use函数会自动关闭调用者(无论中间是否出现异常)
Kotlin的File对象和IO流操作变得行云流水
use函数内部实现也是通过try-catch-finally块捕捉的方式,所以不用担心会有异常抛出导致程序退出
close操作在finally里面执行,所以无论是正常结束还是出现异常,都能正确关闭调用者
java
FileInputStream fis = null;
DataInputStream dis = null;
try {
fis = new FileInputStream("/home/test.txt");
dis = new DataInputStream(new BufferedInputStream(fis));
String lines = "";
while((lines = dis.readLine()) != null){
System.out.println(lines);
}
} catch (IOException e){
e.printStackTrace();
} finally {
try {
if(dis != null)
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if(fis != null)
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
- kotlin
File("/home/test.txt").readLines()
.forEach { println(it) }