2012-02-27 15 views
2

ClassLoader.getSystemResourceAsStreamへの呼び出しは、最終的な特性に変換される基本的なリソースへの入力ストリームを開きます。ClassLoader.getSystemResourceAsStreamを読み込んだ後、入力ストリームを明示的に閉じる必要がありますか?

Properties build = new Properties(); 
build.load(ClassLoader.getSystemResourceAsStream(ANT_BUILD)); 

は、我々は、明示的にプロパティをロードした後、ストリームをクローズする必要がありますか?

java.util.Propertiesを見ていてストリームを閉じることはありません。

答えて

1

デフォルトClassLoader.getSystemResourceAsStream(String)は、BufferedInputStreamにラップされたFileInputStreamを返します。

FileInputStream sourcesを調べると、ストリームが閉じるストリームがfinalizeになっていることがわかります。

もちろん、ガベージコレクタがストリームを処理するまでヒープが成長するのを待つのは良い方法ではありません。ストリームを自分で閉じるようにしてください。

2

loadメソッドが返された後も指定されたストリームが開いたままになるため、ストリームを閉じるのはあなたの責任です。ストリームを明示的に閉じる必要があります。

関連する問題