我需要读取埋在我的包结构中的属性文件com.al.common.email.templates。
com.al.common.email.templates
我已经尝试了一切,但无法解决。
最后,我的代码将在servlet容器中运行,但是我不想依赖任何容器。我写了JUnit测试用例,它需要在两个方面都能工作。
从包中的类加载属性时,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()该资源将相对于它表示包的类是在目录中搜索平均值。
getResource()/ getResourceAsStream()
使用java.lang.String.class.getResource("foo.txt")将/java/lang/String/foo.txt在类路径上搜索(不存在的)文件。
java.lang.String.class.getResource("foo.txt")
/java/lang/String/foo.txt
使用绝对路径(以’/’开头的绝对路径)表示当前软件包将被忽略。