2012-12-19 17 views
6

単純なタスクですが、クラスパスにないプロパティファイルをロードするにはどうしたらいいですか?例えばクラスパスにないプロパティファイルをロードする

: foo.jarをさd:/sample/dir/dir/app1.properties と私はコード内:

public boolean InitConfig(String propePath) { 
     prop = new Properties(); 
     try { 

      InputStream in = this.getClass().getClassLoader().getResourceAsStream(propePath); 
      prop.load(in); 
      return true; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return false; 
     } 
    } 
私はこのように実行する単純なJavaファイルを持っています

propePathはd:/sample/dir/dir/app1.properties
で、InputStream inは常にnullです。 これはなぜ起こりますか?

+1

'InputStream = new FileInputStream(propePath);'は動作しません。 – jlordo

+0

ファイルのパスを使用してロードする必要があります。 getResourceAsStreamは、クラスパスで使用可能なリソース用です。 – muruga

答えて

16

Classloader.getResourceAsStreamでロードできるリソースは、クラス(ローダー)パスのリソースだけです。任意のパスからプロパティを読み取るには、Propertiesクラスの関数loadのいずれかを使用します。

final Properties props = new Properties(); 
props.load(new FileInputStream(filePath)); 
関連する問題