我正在尝试以编程方式本地化一个属性文件而没有 将命令行上的完整路径名传递给我的程序。我想如果可以的话 找到主类的路径,我可以将我的属性文件粘贴在同一个类中 目录或子目录。
如果这不起作用,我可以通过其他方式找到属性的路径 文件没有在命令行上传入。
由于
答案 0 :(得分:8)
如果预计文件相对于主要类别,您可以使用Class.getResource()
或Class.getResourceAsStream()
,如下所示:
class MainClass {
public static void main( String[] args ) {
URL props = MainClass.class.getResource( "foo.properties" );
// ...
}
}
这些将分别返回URL
或InputStream
; Properties.load()
有一个超载,它接受InputStream
。
您可以在子目录等中指定相对于类位置的路径,或者在另一个类上使用getResource()
方法获取相对于该位置的文件。
如果要计算相对于当前工作目录的路径(不一定与主类的父路径相同),则可以使用以下命令获取该路径:
String cwd = System.getProperty( "user.dir" );
System.getProperties()
的文档中列出了可用的系统属性。
答案 1 :(得分:0)
您可以use the ClassLoader to locate the application directory,但作为Rob says,最好直接从类路径加载属性文件。