继承我的自定义.properties文件中的user.home属性

时间:2010-10-20 08:22:31

标签: java properties system-properties

我可以在.properties文件中执行working-dir="file:${user.home}/some-directory"之类的操作吗?我正在使用ResourceBundle从.properties文件加载配置,我将为user.home属性继承系统属性键,例如working-dir。能够这样做会很高兴,因为我可以分别在源包和测试包的资源目录中有不同版本的.properties。我想为我的生产和测试环境定义working-dir的不同值。

2 个答案:

答案 0 :(得分:1)

您不能直接执行此操作,但是您可以在代码中解析属性并以编程方式扩展变量,例如

  • 在您的媒体资源中搜索模式${varname}
  • 从系统属性
  • 获取varname的值
  • ${varname}替换为系统属性varname
  • 的值

以上是上述的简单实现:

String property = "file:${user.home}/some-directory";

StringBuffer sb = new StringBuffer();
Pattern pattern = Pattern.compile("\\$\\{(.+)\\}");
Matcher matcher = pattern.matcher(property);
while (matcher.find())
{
    String key = matcher.group(1);
    String val = System.getProperty(key);
    if (val != null)
    {
        matcher.appendReplacement(sb, Matcher.quoteReplacement(val));
    }
}
matcher.appendTail(sb);
System.out.println(sb.toString());

答案 1 :(得分:0)

刚试过Apache commons configurationvariable interpolation并且它运作完美。