apache commons configuration loads property until “,” character

巧了我就是萌 提交于 2019-11-27 17:36:40

问题


I want to load configuration (apache commons configuration) from a properties file. My program is:

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

In my.properties I have

 myValue=value,

with comma

When I run program the output is value, not value, with comma. Looks like value is loaded until , character.

Any ideas?


回答1:


Check Javadoc. You have to setDelimiterParsingDisabled(true) to disable parsing list of properties.




回答2:


That behavior is clearly documented, i.e., that PropertiesConfiguration treats a value with a comma as multiple values allowing things like:

fruit=apples,banana,oranges

to be interpreted sensibly. The fix (from the doc) is to add a backslash to escape the comma, e.g.,

myKey=value\, with an escaped comma



回答3:


Actually propConfig.setDelimiterParsingDisabled(true) is working, but you must load the config file after this setting, for example:

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

if your code like is :

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

then the setting won't work




回答4:


PropertiesConfiguration interprets ',' as a value separator.




回答5:


If you put \ before the ,, you escape it, and you can read the value

Example:

myValue=value\, with comma

You read = value, with comma without problems



来源:https://stackoverflow.com/questions/6307318/apache-commons-configuration-loads-property-until-character

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!