2012-03-03 8 views
37

私のコードは次のとおりです。ドキュメントでJavaでInputStreamを閉じる必要はありますか?

InputStream confFile=classLoader.getResourceAsStream("myconffile.properties"); 

InputStreamのcloseメソッドは何もしません。それは私が近いInputStreamを必要としないことを

を意味するのでしょうか?

答えて

25

あなたが言及したメソッドによって返されるストリームは、実際にはファイルのハンドルを保持するFileInputStreamまたはInputStreamのその他のサブクラスであるため、入力ストリームを閉じる必要があります。このストリームを閉じなければ、リソースが漏れてしまいます。

+1

ほとんどの場合、FileInputStreamとは思えません。 –

+0

私は、残念ながら、現時点では手元にJavaインスタンスがないことを調査する必要があります。しかし、私はそれがファイルハンドルを保持していることに同意します。 –

+0

finalize()メソッドはリソースストリームを閉じませんか? –

19

いいえ、それはそれを意味するものではありません - InputStreamは抽象クラスであるため、そしてgetResourceAsStream()は、そのclose()方法何かない具象サブクラスを返します - 最も重要なのは無料のファイルハンドルを。

関連する問題