Java apache commons配置将加载属性,直到"&引用;性格

Java apache commons配置将加载属性,直到"&引用;性格,java,apache-commons,apache-config,Java,Apache Commons,Apache Config,我想从属性文件加载配置(apache commons配置)。我的计划是: PropertiesConfiguration pc=新的PropertiesConfiguration(“my.properties”); System.out.println(pc.getString(“myValue”); 在my.properties中,我有 myValue=value, 用逗号 当我运行程序时,输出是值,而不是值,带有逗号。看起来值一直加载到,字符 有什么想法吗?该行为是,即属性配置将带有逗

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

PropertiesConfiguration pc=新的PropertiesConfiguration(“my.properties”);
System.out.println(pc.getString(“myValue”);
my.properties
中,我有

 myValue=value,
用逗号

当我运行程序时,输出是
,而不是
值,带有逗号
。看起来值一直加载到
字符

有什么想法吗?

该行为是,即
属性配置
将带有逗号的值视为多个值,允许如下操作:

fruit=apples,banana,oranges
被合理地解释。修正(来自文档)是添加反斜杠以转义逗号,例如

myKey=value\, with an escaped comma

将“,”解释为值分隔符。

检查。必须设置DelimiterParsingDisabled(true)才能禁用属性解析列表。

如果将
\
放在
之前,则可以将其转义,并读取值

例如:

myValue=value\, with comma

您使用逗号读取=
值,没有问题

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

propConfig = new PropertiesConfiguration();
            propConfig.setDelimiterParsingDisabled(true);
            propConfig.load(propertiesFile);
如果您的代码是:

propConfig=新属性配置(propertiesFile); propConfig.setDelimiterParsingDisabled(true)


然后该设置将不起作用

请注意,如果您对不同的配置文件使用配置文件,则需要对这些“,”逗号和“\\”进行两次转义,因为字符串会被解析两次。请注意,这是错误的。