gpt4 book ai didi

java - 评估属性文件java中的属性值

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:49 24 4
gpt4 key购买 nike

在我的属性文件中,我使用如下系统变量:

log4j.appender.RollingFile.File=${workspace.logs}/my.log

我正在这样阅读该属性:

Properties p = new Properties();
p.load(new FileInputStream("logger.properties"));
String label = (String) p.get("log4j.appender.RollingFile.File");
System.out.println(label);

结果是:

${workspace.logs}/my.log

如何打印评估变量的结果?例如

C:/logs/my.log ?

已编辑

我相信我可以在正则表达式中做到这一点 - 正如一些人所建议的 - 所以完美的解决方案是如何用 System.property 替换 ${..} 内容

最佳答案

首先我们必须找到 ${ } 里面的内容。提取后,将整个内容替换为环境属性中的值(希望 workspace.logs 是一个环境变量

)...让我们可以使用

System.getenv()

然后我们可以使用replace方法替换相同的内容。这应该在循环中完成,以防出现多个 env_variable 出现

Properties p = new Properties();
p.load(new FileInputStream("c:\\log4j.properties"));
String label = (String) p.get("log4j.appender.RollingFile.File");
int firstIndex=label.indexOf("${");
int lastIndex=label.indexOf("}");
String tempKey =label.substring(firstIndex+2,lastIndex);
String tempValue =System.getenv(tempKey);
label=label.replaceFirst("\\$\\{((?s).*)\\}",tempValue);
System.out.println(label);

将为您提供输出

c:/log/my.log

关于java - 评估属性文件java中的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com