apache commons configuration loads property until

2019-01-25 09:30发布

问题:

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