我正在尝试以编程方式本地化属性文件,而不必将命令行上的完整路径名传递给我的程序。我想如果我可以找到主类的路径,我可以将我的属性文件放在同一目录或子目录中。
如果这不起作用,是否有其他方法可以找到属性文件的路径,而无需在命令行中传递它。
谢谢
我正在尝试以编程方式本地化属性文件,而不必将命令行上的完整路径名传递给我的程序。我想如果我可以找到主类的路径,我可以将我的属性文件放在同一目录或子目录中。
如果这不起作用,是否有其他方法可以找到属性文件的路径,而无需在命令行中传递它。
谢谢
如果预计文件相对于主类定位,您可以使用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()
。
您可以使用 ClassLoader 来定位应用程序目录,但正如Rob 所说,最好直接从类路径加载属性文件。