我正在尝试以编程方式本地化一个属性文件,而不必将命令行上的完整路径名传递给我的程序.我想如果我能找到主类的路径,我可以将我的属性文件粘贴在同一目录或子目录中.
如果这不起作用,我可以通过其他方式找到属性文件的路径,而无需在命令行上传递它.
谢谢
如果预期文件相对于主类,则可以使用Class.getResource()或Class.getResourceAsStream()如下:
class MainClass {
public static void main( String[] args ) {
URL props = MainClass.class.getResource( "foo.properties" );
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
这些将分别返回一个URL或一个InputStream; 有一个超载Properties.load(),接受一个InputStream.
您可以在子目录中指定相对于类的位置的路径,或者getResource()在另一个类上使用该方法来获取相对于该位置的文件.
如果要计算相对于当前工作目录的路径(不一定与主类的父目录相同),则可以使用以下命令获取该路径:
String cwd = System.getProperty( "user.dir" );
Run Code Online (Sandbox Code Playgroud)
文档中有可用的系统属性列表System.getProperties().