1、常规用法
try{
FileOutputStream fos=new FileOutputStream(XXX);
...
}catch(Exception e){
e.printStackTrace();
}finally{
if (fos != null) {
fos.close();
}
}
2、try-with-resources用法
try(FileOutputStream fos=new FileOutputStream(XXX))
{
...
}catch(Exception e){
e.printStackTrace();
}finally{
}
对比可知,try-with-resources语法将流的创建放在了try()里,且finally处不需要再关闭流,这就是该语法的核心作用。
该语句为java 7之后的新特性,称为ARM 块(Automatic Resource Management) ,自动资源管理,支持包括流以及任何可关闭的资源,数据流会在 try 执行完毕后自动被关闭,前提是,这些可关闭的资源必须实现 java.lang.AutoCloseable 接口。