【问题标题】:Java try-with-resource when one resource wraps another [duplicate]当一个资源包装另一个资源时,Java try-with-resource [重复]
【发布时间】:2019-04-05 18:21:34
【问题描述】:

假设我需要这个实例 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)) {
    ...
}

谢谢,

伊多·索罗宗

【问题讨论】:

  • 您的问题类型似乎已被问到many times previously on this site
  • 这是一个不同的问题,我在网上搜索过,我能找到的唯一答案是当我有 2 个单独的资源时。但是你的一个搜索结果this 触动了我的困境,也许我的搜索字符串不够好

标签: java try-with-resources


【解决方案1】:

我建议一个更易读的选项(提取方法):

try (BufferedReader reader = getBufferReader()) {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多