Eclipse が次のリソース リーク警告を表示する理由はありますか:リソース リーク: 'br' は決して閉じられません" ? 私が話しているコードは、この投稿の下部にあります。
私の最終ブロックはそれをすべてカバーしていると思いました、私の推論:
- res は、 FileInputStream コンストラクターがスローした場合にのみ null になるため、何も閉じる必要はありません
- InputStreamReader コンストラクターがスローする場合 (たとえば、不正な形式のエンコーディング文字列)、res が入力ストリームになり、InputStream のみを閉じる必要があるため、問題ありません。
- 等...
それで、私は何が欠けていますか?それとも、これは日食のバグでしょうか?
敬具!
S.
public static String fileToString(String fileName, String encoding) throws IOException {
InputStream is;
InputStreamReader isr;
BufferedReader br;
Closeable res = null;
try {
is = new FileInputStream(fileName);
res = is;
isr = new InputStreamReader(is, encoding);
res = isr;
br = new BufferedReader(isr);
res = br;
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) {
builder.append(line);
builder.append(LS);
}
return builder.toString();
} finally {
if (res != null) {
res.close();
}
}
}