【发布时间】:2013-01-04 09:05:18
【问题描述】:
这是代码吗
BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt"));
try {
bw.write("test");
} finally {
IOUtils.closeQuietly(bw);
}
安全与否?据我了解,当我们关闭 BufferedWriter 时,它会将其缓冲区刷新到底层流,并且可能由于错误而失败。但是 IOUtils.closeQuietly API 说任何异常都会被忽略。
是否有可能由于 IOUtils.closeQuietly 而导致数据丢失被忽视?
【问题讨论】:
-
不是答案,但try-with-resources 声明将消除大多数使用
IOUtils.closeQuietly的需求。 -
不错的答案,但这个功能是 Java 7 中的新功能。如果您由于某种原因(例如较旧的 Android 版本)无法使用 Java 6,那么
closeQuietly()仍然是可行的方法。跨度> -
IOUtils.closeQuietly 已被弃用,现在使用 try with resource 代替。
-
closeQuietly(..) 如果资源的 close() 方法抛出检查异常,仍然是必需的。在这种情况下,try-with-resources 不能用作 close() 上的异常会冒泡。
标签: java apache-commons apache-commons-io