我知道InputStream
应该关闭。但我有些怀疑在哪里以及如何做到这一点。没有try/catch块关闭InputStream?
据对IOUtils.closeQuietly文档:
无条件关闭的InputStream。相当于 InputStream.close(),除了任何异常将被忽略。 这是 通常用于最后的块。
我的代码中不需要try/catch
块,所以我没有finally
块。在我的方法中返回它之前关闭InputStream是否正确,或者我应该做一些不同的事情?该方法将被多个服务用于从文件加载InputStream
。
public InputStream read(String filename) {
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
if (inputStream == null) {
// Throw some exception
}
IOUtils.closeQuietly(inputStream);
return inputStream;
}
看你的方法,它不应该是一个关闭'InputStream'。让调用者关闭它。 – Tunaki
你为什么要返回'InputStream'而不是文件的内容? – ndrone
@ndrone因为还有其他的逻辑需要文件作为'InputStream'。但这与imo问题无关。 – Diyarbakir