gpt4 book ai didi

java - 我应该使用方法 close 还是 closeQuietly 来关闭输出流?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:52 40 4
gpt4 key购买 nike

当我们需要关闭输出流时,我们有两种选择。

  1. closeQuietly 表示关闭流,不会抛出任何异常。

    try {
    close(out)
    } catch(IOException e) {
    }
  2. 关闭

    try {
    close(out)
    } catch(IOException e) {
    throw anException;
    }

众所周知,输出流在关闭时会在文件末尾写入一个/几个字符,如果这些写入错误,文件也无法正确打开,例如ZipoutputStream。

如果我使用第一个,我将面临关闭失败的风险。如果我使用第二个,它会让我的代码变得不友好。

有人可以给我一些建议吗?

很抱歉,问题描述不清楚。

我的意思是如何安全地进行 IO 操作。如果资源的发布失败,它会通知调用者。

感谢您的所有回答。特别感谢@Don Roby 给我一个链接,其中包含@Fabian Barney 回答的最佳答案

最佳答案

自从 Java 7 IOUtils.closeQuietly 已经过时,唯一合理的解决方案是 try-with-resources 自动关闭资源

try (InputStream is = new FileInputStream(file)) {
...
}

请注意,它还解决了正确打开/关闭多个资源的问题

try (InputStream is = new FileInputStream(infile); OutputStream out = new FileOutputStream(outfile)) {
...
}

而且它也不会抑制 close() 可能抛出的 IOException,这正是 closeQuietly 所做的。

关于java - 我应该使用方法 close 还是 closeQuietly 来关闭输出流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915341/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com