传统方式关闭流需要到finally去关闭
public void test() {
InputStream inputStream = null;
try {
inputStream = new FileInputStream("xxx");
// 实现
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
使用try-with-resources关闭流
public void test2() {
try (InputStream inputStream = new FileInputStream("xxx")) {
byte[] bytes = inputStream.readAllBytes();
// 实现
} catch (IOException e) {
e.printStackTrace();
}
}
能被try-with-resources自动关闭的资源类型
只有实现了java.lang.AutoCloseable接口的类,才可以被自动关闭。否则就会报错。
也可以自定义可被自动关闭的类,只要实现java.lang.AutoCloseable接口就行
class YourClass implements java.lang.AutoCloseable{
@Override
public void close() {
//xxxx
}
}
参考来源链接
网友评论