我有一个应用程序,其中有一个变量'file_Base_Path',我正在从propertyFile读取它的值(比如sample.properties)。我想将变量值设置为user.home和 $ {user.home} 无效。如何将值设置为user.home,以便它在Linux和Windows中都能正常工作。
注意:我不能使用System.getProperties('user.home')因为值不总是user.home它可能会有所不同
sample.properties:
file_Base_Path=${user.home}
我如何设置值:
properties.getProperty("file_Base_Path") //i'm expecting '/home/user' but it is returning '${user.home}'
由于
答案 0 :(得分:0)
属性文件没有环境变量替换...
获取环境变量的方法是
System.getProperties("variablename");
如果"variablename"
是自变量的,为什么不通过属性配置?
sample.properties:
userhome.variable.name=user.home
Java代码:
String userhomeVariableName = properties.getProperty("userhome.variable.name");
String userhome = System.getProperties(userhomeVariableName);
答案 1 :(得分:0)
为什么不这样做:
String localHome=properties.getProperty("file_Base_Path");
if(localHome.equals("${user.home}"){
localHome=System.getProperties("user.home");
}
答案 2 :(得分:0)
如果使用Spring,@Value
注释会将${user.home}
转换为适当的注入值。
保持sample.properties按原样保存在您的类中:
@Value("${file_Base_Path}")
private String filePath;
在注入变量之前,${user.home}
变量将被Spring翻译。
有关详情,请参阅Value。
或者按照here
的说明使用Apache Commons Configuration如果您不想使用Spring或Apache Commons Configuration,那么您必须推出自己的解决方案,因为Properties和System.getProperties不会对属性文件的内容进行转换。你必须:
file_Base_Path=${user.home}/resources/${java.version}
的情况时)。