我知道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