一尘不染

从Java包中加载属性文件

java

我需要读取埋在我的包结构中的属性文件com.al.common.email.templates

我已经尝试了一切,但无法解决。

最后,我的代码将在servlet容器中运行,但是我不想依赖任何容器。我写了JUnit测试用例,它需要在两个方面都能工作。


阅读 400

收藏
2020-03-11

共1个答案

一尘不染

从包中的类加载属性时,com.al.common.email.templates可以使用

Properties prop = new Properties();
InputStream in = getClass().getResourceAsStream("foo.properties");
prop.load(in);
in.close();

(添加所有必要的异常处理)。

如果你的类不在该程序包中,则需要稍微不同地获取InputStream:

InputStream in = 
 getClass().getResourceAsStream("/com/al/common/email/templates/foo.properties");

相对路径(那些没有前导“/”)中getResource()/ getResourceAsStream()该资源将相对于它表示包的类是在目录中搜索平均值。

使用java.lang.String.class.getResource("foo.txt")/java/lang/String/foo.txt在类路径上搜索(不存在的)文件。

使用绝对路径(以’/’开头的绝对路径)表示当前软件包将被忽略。

2020-03-11