java - 如何关闭 IO?

标签 java io

当我管理IO时,我发现了一个问题。我曾经像这样关闭它:

try {
        // my code
    } catch (Exception e) {
        // my code
    } finally{
        if (is != null) {
            is.close();
        }
    }

但是关闭方法也会抛出异常。如果我有多个 IO,我必须关闭所有的 IO。所以代码可能是这样的:

try {
    // my code
} catch (Exception e) {
    // my code
} finally{
    if (is1 != null) {
        is1.close();
    }
    if(is2 != null{
        is2.close();
    }
    // many IOs
}

如果 is1.close() 抛出异常,is2、is3 不会自行关闭。所以我必须输入很多 try-catch-finally 来控制它们。有没有其他方法可以解决这个问题?

最佳答案

与其重新发明轮子,不如使用 Apache 中的 closeQuietly(...) 方法 IOUtils .这些方法会压缩 close() 发出的任何 IOException,并且还会处理参数为 null 的情况。

您唯一应该注意的是不要在具有未刷新数据的输出流上调用它。如果您这样做并且冲洗失败,您将不会听到它。如果您正在写入的数据很重要,那么不知道刷新失败将是一件坏事。

关于java - 如何关闭 IO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13226083/

相关文章:

java - 有没有办法在网格布局中编辑特定标签的文本?

Java 构造函数错误 : Constructor is defined, 未找到

java - 控制机制的判定(if条件的必要性?)

Java 文件 I/O - 文本文件 - 如何编辑某些内容?

html - 使用 VBA 将本地 HTML 文件读入字符串

events - 非阻塞(事件驱动 I/O)与阻塞 I/O

java - @PathVariable 的全局通用 PropertyEditorSupport -> 域对象

java - 在做小型单类程序时,我应该将所有内容设为静态还是在 main 中实例化自身的副本?

c++ - 使用对函数和 IO 对象的引用(作为参数)的目的是什么?

c - 在外部写入时从 C 中读取文件