2

我正在尝试以编程方式本地化属性文件,而不必将命令行上的完整路径名传递给我的程序。我想如果我可以找到主类的路径,我可以将我的属性文件放在同一目录或子目录中。

如果这不起作用,是否有其他方法可以找到属性文件的路径,而无需在命令行中传递它。

谢谢

4

2 回答 2

8

如果预计文件相对于主类定位,您可以使用Class.getResource()orClass.getResourceAsStream()如下:

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

这些将分别返回 aURL或 an InputStream;有一个Properties.load()接受InputStream.

您可以在子目录等中指定相对于类的位置的路径,或者getResource()在另一个类上使用该方法来获取相对于该位置的文件。

如果要计算相对于当前工作目录的路径(不一定与主类的父级相同),则可以使用以下方法获取该路径:

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

文档中有可用系统属性的列表System.getProperties()

于 2009-04-12T00:01:40.767 回答
0

您可以使用 ClassLoader 来定位应用程序目录,但正如Rob 所说,最好直接从类路径加载属性文件。

于 2009-04-12T09:20:28.723 回答