2009-07-07 10 views
8

ClassLoaderを使用して、Propertiesクラスのプロパティファイルをロードします。私は「theta.properties」ファイルを持って、このクラスと同じディレクトリにJava ClassLoaderを使用してクラスパスからファイルをロードするにはどうすればよいですか?

loader = this.getClass().getClassLoader(); 
in = loader.getResourceAsStream("theta.properties"); 
result = new Properties(); 
result.load(in); 

をしかしInputStreamが常にnullです:私はこの議論の目的のためにエラー処理を削除するために以下のコードを簡素化しました。ファイルを間違った場所に置いていますか?私はeclipseとそのセットを使用してクラスファイルをソースフォルダにビルドしています。それで問題にならないはずです。

JavaDocでClassLoaderでどのクラスパスが検索されているかを知ることができません。

答えて

10

getClass().getClassloader()を使用することにより、ルート・パスディレクトリから "theta.properties" を探してください。そのクラスに関連するリソースを取得するには、getClass().getResourceAsStream()を使用してください。

6

ファイルがクラスと同じディレクトリにある場合は、クラスのパッケージにディレクトリとしてプレフィックスを付ける必要があります。

あなたのパッケージがあるのであれば:

package com.foo.bar; 

次に、あなたのコードは次のとおりです。

.getResourceAsStream("com/foo/bar/theta.properties"); 
-1

ResourceBundleを使用できます