我正在尝试以编程方式本地化一个属性文件,而不必在命令行上将它的完整路径名传递给我的程序。我想,如果我能找到主类的路径,我就能把我的属性文件放在同一目录或子目录中。
如果这不起作用,有没有其他方法可以找到属性文件的路径,而不是在命令行中传递它。
谢谢
发布于 2009-04-11 16:01:41
如果期望文件位于相对于主类的位置,则可以使用Class.getResource()
或Class.getResourceAsStream()
,如下所示:
class MainClass {
public static void main( String[] args ) {
URL props = MainClass.class.getResource( "foo.properties" );
// ...
}
}
这两个函数将分别返回一个URL
或一个InputStream
;对于接受InputStream
的Properties.load()
,有一个重载。
您可以指定子目录中相对于类位置的路径等,或者在另一个类上使用getResource()
方法来获取相对于该位置的文件。
如果要计算相对于当前工作目录的路径(不一定与主类的父类相同),则可以使用以下命令来获取该路径:
String cwd = System.getProperty( "user.dir" );
在System.getProperties()
的文档中有一个可用的系统属性列表。
发布于 2009-04-12 01:20:29
您可以使用use the ClassLoader to locate the application directory,但是作为Rob says,直接从类路径加载属性文件会更好。
https://stackoverflow.com/questions/740999
复制相似问题