当我管理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/