JAVA中,JVM的垃圾回收机制可以对内部资源实现自动回收,给开发者带来了极大的便利。
但是JVM对外部资源(调用了底层操作系统的资源)的引用却无法自动回收,例如数据库连接,网络连接以及输入输出IO流等。这些连接就需要我们手动去关闭,不然会导致外部资源泄露,连接池溢出以及文件被异常占用等。
JDK7之后,新增了“try-with-resource”。它可以自动关闭实现了AutoClosable
接口的类,实现类需要实现close()
方法。
”try-with-resources “ 将try-catch-finally
简化为try-catch
,这其实是一种语法糖,在编译时仍然会进行转化为try-catch-finally
语句。
package com.bjsxt;
import java.io.FileReader;
public class Test8 {
public static void main(String[ ] args) {
try(FileReader reader = new FileReader("d:/a.txt");) {
char c = (char) reader.read();
char c2 = (char) reader.read();
System.out.println("" + c + c2);
}
catch (Exception e) {
e.printStackTrace();
}
}
}