2

コマンドラインでフルパス名をプログラムに渡すことなく、プロパティファイルをプログラムでローカルにしようとしています。メイン クラスのパスを見つけることができれば、プロパティ ファイルを同じディレクトリまたはサブディレクトリに貼り付けることができます。

それがうまくいかない場合、コマンドラインで渡さずにプロパティファイルのパスを見つけることができる他の方法があります。

ありがとう

4

2 に答える 2

8

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

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

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

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

現在の作業ディレクトリ (メイン クラスの親と必ずしも同じではない) からの相対パスを計算する場合は、次を使用してそのパスを取得できます。

String cwd = System.getProperty( "user.dir" );

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

于 2009-04-12T00:01:40.767 に答える