2009-04-11 24 views
2

をプログラムにコマンドラインで渡すことなくプログラムでローカルにプロパティファイルを作成しようとしています。私は メインクラスのパスを見つけることができる場合私は同じ ディレクトリまたはサブディレクトリに自分のプロパティファイルを張ることができます。メインの実行クラスのフルパスをプログラムで見つける方法

もしそれがうまくいかないのであれば、コマンドラインでそれを渡さずに、ファイル のファイルのパスを見つけることができます。

おかげ

答えて

8

ファイルがメインクラスに対して配置されることが予想されている場合は、次のように、あなたがClass.getResource()Class.getResourceAsStream()を使用することができます。

class MainClass { 
    public static void main(String[] args) { 
     URL props = MainClass.class.getResource("foo.properties"); 
     // ... 
    } 
} 

これらはそれぞれ、URLまたはInputStreamを返します。 を受け入れるProperties.load()のオーバーロードがあります。

サブディレクトリなどのパスをクラスの相対位置で指定するか、別のクラスのgetResource()メソッドを使用して、その場所に関連するファイルを取得できます。

String cwd = System.getProperty("user.dir"); 
:あなたは(必ずしもメインクラスの親と同じではありません)現在の作業ディレクトリからの相対パスを計算したい場合は

は、その後、あなたはそのパスを取得するには、次のように使用することができます

System.getProperties()のドキュメントに利用可能なシステムプロパティのリストがあります。

0

​​でもかまいませんが、Rob saysとして、クラスパスからプロパティファイルを直接ロードする方がよいでしょう。

関連する問題