如何知道resourceBoundle加载的属性的绝对路径

时间:2016-02-15 09:45:38

标签: java tomcat

我使用以下代码加载属性:

c:\tomcat8\webapps\example\WEB-INF\classes\file.properties.

我想知道加载文件的绝对路径。例如,如果我在tomcat的webapps文件夹中的Web应用程序中执行此代码,我想获取:

using System.Linq;

我怎么知道这条路?

2 个答案:

答案 0 :(得分:0)

我已经解决了'我对这篇文章'Getting current working directory'的问题。对于我的问题,我只需要这个,一旦我知道工作目录,我就可以找到绝对路径

public class Test {
public static void main(String... args) throws Exception {
    URL location = Test.class.getProtectionDomain().getCodeSource().getLocation();
    System.out.println(location.getFile());
}}

我认为也许这个解决方案并不能涵盖所有情况,但这对我来说已经足够了。

答案 1 :(得分:0)

您无法从ResourceBundle获取物理位置,但如果您知道用于加载它的路径,那么您可以找到的物理位置。像这样:

String resourceToLoad = "file";
URL url = this.getClassLoader().getResource(resourceToLoad);
ResourceBoundle bundle = ResourceBundle.getBundle(resourceToLoad);

url将拥有资源的物理位置 - 至少在大多数情况下都是如此。

请记住,ResourceBundle也可以由Java类支持,而不是像属性文件那样。 ClassLoader.getResource并不了解ResourceBundle和Java类之间的映射。如果您希望能够支持这些,那么您必须实现与ResourceBundle所做的类似的算法,以便搜索与其匹配的类。