apache commons配置加载属性,直到“,”字符

我想从属性文件加载配置(apache commons配置)。 我的计划是:

PropertiesConfiguration pc = new PropertiesConfiguration("my.properties"); System.out.println(pc.getString("myValue")); 

my.properties我有

  myValue=value, 

用逗号

当我运行程序时,输出是value ,而不是value, with comma 。 看起来像值被加载,直到,字符。

有任何想法吗?

检查Javadoc 。 您必须setDelimiterParsingDisabled(true)才能禁用解析属性列表。

该行为已明确记录 ,即, PropertiesConfiguration将带逗号的值视为多个值,允许以下内容:

 fruit=apples,banana,oranges 

理智地解释。 修复(来自doc)是添加反斜杠以逃避逗号,例如,

 myKey=value\, with an escaped comma 

实际上propConfig.setDelimiterParsingDisabled(true)正在运行,但您必须在此设置后加载配置文件,例如:

 propConfig = new PropertiesConfiguration(); propConfig.setDelimiterParsingDisabled(true); propConfig.load(propertiesFile); 

如果您的代码是:

propConfig = new PropertiesConfiguration(propertiesFile); propConfig.setDelimiterParsingDisabled(真);

然后设置将无法正常工作

PropertiesConfiguration将’,’解释为值分隔符。

如果您在\之前放置\ ,则将其转义,然后您可以读取该值

例:

 myValue=value\, with comma 

你读取= value, with comma没有问题