所以我的问题不是如何从相对路径加载属性文件,而是如何将相对路径(相对于属性文件)声明为文件中的属性路径?
例如,我想要一个目录等。
|-etc
|---File1
|---File2
|---properties.
现在我想要内部属性,
file1 = ./File1
file2 = ./File2
但Java只会获得实际内容,如" ./ File1"
如何连接它以便Java获取属性并理解它应该与属性文件的位置相关?
所以,当你执行new File(properties.getproperty(file1))
时,它会尝试在C:// etc / File1中查找文件,而不仅仅是./File1
答案 0 :(得分:1)
您需要了解Java属性文件只是键/值对的列表。你如何解释这些价值取决于你。因此,您应该期望properties.getProperty("file1")
会为您提供字符串"./File1"
...但您可以非常轻松地使用作为相对文件名:
File rootDirectory = ...; // However you get this
String relativePath = properties.getProperty("file1");
File file = new File(rootDirectory, relativePath);
答案 1 :(得分:0)
为了补充Jon的答案,你必须以某种方式将根文件夹设置为参考点。你的行
new File(properties.getproperty(file1))
将查找与包含该行的已编译Java类的.class文件的位置进行比较的相对路径。即使您正确地设置了相对于此的相对路径,如果您要将类一个包移动,代码也会中断。