Java7新特性,支持使用try后面跟随()括号管理释放资源
例如通常使用try代码块
1 try {
2 fis = new FileInputStream(source);
3 fos = new FileOutputStream(target);
4
5 byte[] buf = new byte[1024];
6
7 int i;
8 while ((i = fis.read(buf)) != -1) {
9 fos.write(buf, 0, i);
10 }
11 }
12 catch (Exception e) {
13 e.printStackTrace();
14 } finally {
15 close(fis);
16 close(fos);
17 }
使用Java7新特性(两段代码是等效的)
1 try (
2 InputStream fis = new FileInputStream(source);
3 OutputStream fos = new FileOutputStream(target)
)
{
4
5 byte[] buf = new byte[1024];
6
7 int i;
8 while ((i = fis.read(buf)) != -1) {
9 fos.write(buf, 0, i);
10 }
11 }
12 catch (Exception e) {
13 e.printStackTrace();
14 }
try括号内的资源会在try语句结束后自动释放,前提是这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。