try-with-resources
1.不使用try-with-resources关闭资源
public void FileOutputStreamOfTryCatch(){
FileOutputStream out = null;
try {
out = new FileOutputStream(new File("out.txt"),true);
out.write("abc".getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.使用try-with-resources关闭资源
public void FileOutputStreamOfTryWithResources(){
try(FileOutputStream out = new FileOutputStream(new File("out.txt"),true)){
out.write("abc".getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
注意:
1.try-with-resources,即:自动调用资源的close()函数
2.只有实现了java.lang.AutoCloseable接口,或者java.io.Closable(实际上继随自java.lang.AutoCloseable)接口的对象,才能使用try-with-resources自动调用其close()函数。不同之处:java.io.Closable要求一实现者保证close函数可以被重复调用。而AutoCloseable的close()函数则不要求是幂等(任意多次执行所产生的影响均与一次执行的影响相同)的。