Java7新特性,支持使用try后面跟随()括号管理释放资源
例如通常使用try代码块
1 try { 2 fis = new FileInputStream(source); 3 fos = new FileOutputStream(target); 4 5 byte[] buf = new byte[8192]; 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[8192]; 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 接口。