将相对路径作为属性文件中的属性

Posted

技术标签:

【中文标题】将相对路径作为属性文件中的属性【英文标题】:Have Relative Paths as properties in property file 【发布时间】:2014-12-26 18:12:15 【问题描述】:

所以我的问题不是如何从相对路径加载属性文件,而是如何将相对路径(相对于属性文件)声明为文件中的属性路径?

例如,我想要一个目录等

|-etc
|---File1
|---File2
|---properties.

现在我想要一些类似的属性,

file1 = ./File1
file2 = ./File2

但 Java 会简单地获取像“./File1”这样的实际内容

我如何连接它,以便 Java 获取属性并理解​​它应该与属性文件所在的位置相关?

因此,当您执行new File(properties.getproperty(file1)) 时,它将尝试在 C://etc/File1 中查找文件,而不仅仅是 ./File1

【问题讨论】:

如何加载属性文件? 使用工厂模式或包装模式怎么样?你打算用一些 API 来使用你的 File 实例吗? 有些人扩展了 File.class。 ***.com/questions/11513327/java-myfile-extends-file 【参考方案1】:

您需要了解 Java 属性文件只是键/值对的列表。你如何解释这些价值观取决于你。所以你应该期望properties.getProperty("file1") 会给你字符串"./File1"...但是你可以使用它作为一个相对文件名很容易:

File rootDirectory = ...; // However you get this
String relativePath = properties.getProperty("file1");
File file = new File(rootDirectory, relativePath);

【讨论】:

【参考方案2】:

为了补充 Jon 的回答,您必须以某种方式将根文件夹设置为参考点。你的线路

new File(properties.getproperty(file1))

将查找与包含该行的已编译 Java 类的 .class 文件的位置相比较的相对路径。即使您正确设置了相对路径,如果您将类 1 包向上移动,代码也会中断。

【讨论】:

以上是关于将相对路径作为属性文件中的属性的主要内容,如果未能解决你的问题,请参考以下文章

将相对路径转换为绝对路径?

使用 JavaScript 将相对路径转换为绝对路径

如何在 NodeJS 中使用相对路径(参数)获取文件

如何将相对路径转换为 ​​C#/.NET 中的完全限定路径?

组件属性为图片的,需要写图片的绝对路径

如何在属性文件中写入相对路径