我想从属性文件加载配置(apache commons配置)。我的节目是:
PropertiesConfiguration pc = new PropertiesConfiguration("my.properties");
System.out.println(pc.getString("myValue"));
在my.properties
我有
myValue=value,
用逗号
当我运行程序时,输出为value
,而不是value, with comma
。看起来值加载到,
字符之前。
有什么想法吗?
答案 0 :(得分:13)
该行为为clearly documented,即PropertiesConfiguration
将带逗号的值视为多个值,允许以下内容:
fruit=apples,banana,oranges
明智地解释。修复(来自doc)是添加一个反斜杠来转义逗号,例如,
myKey=value\, with an escaped comma
答案 1 :(得分:9)
检查Javadoc。您必须setDelimiterParsingDisabled(true)才能禁用解析属性列表。
答案 2 :(得分:3)
实际上propConfig.setDelimiterParsingDisabled(true)正常工作,但您必须在此设置后加载配置文件,例如:
propConfig = new PropertiesConfiguration();
propConfig.setDelimiterParsingDisabled(true);
propConfig.load(propertiesFile);
如果你的代码是:
propConfig = new PropertiesConfiguration(propertiesFile); propConfig.setDelimiterParsingDisabled(真);
然后设置无效
答案 3 :(得分:0)
PropertiesConfiguration将','解释为值分隔符。
答案 4 :(得分:0)
如果您将\
放在,
之前,则将其转义,然后您就可以读取值
示例:
myValue=value\, with comma
您没有问题地阅读= value, with comma