java - 当一个资源包装另一个资源时,Java try-with-resource
问题描述
假设我需要这个实例new BufferedReader(new InputStreamReader(new FileInputStream(path)))
,使用 try with resource 编写它的最佳方法是什么。
1.我习惯写的——因为只有第一个Closable需要关闭
try (FileInputStream fileInputStream = new FileInputStream(path)) {
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));
...
}
2.最外层的Closable关闭其内层的Closable等。
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path)))) {
...
}
3. 为每个 Closable 使用单独的资源
try (
FileInputStream fileInputSream = new FileInputStream(path);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputSream);
BufferedReader reader = new BufferedReader(fileInputSream)) {
...
}
谢谢,
伊多·索罗宗
解决方案
我建议一个更具可读性的选项(提取方法):
try (BufferedReader reader = getBufferReader()) {