Reputation: 213
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?
Upvotes: 19
Views: 10681
Reputation: 274
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);
Settings won't work if your code like is:
propConfig = new PropertiesConfiguration(propertiesFile);
propConfig.setDelimiterParsingDisabled(true);
Upvotes: 7
Reputation: 4326
Check Javadoc. You have to setDelimiterParsingDisabled(true) to disable parsing list of properties.
Upvotes: 10
Reputation: 41287
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
Upvotes: 16
Reputation: 451
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
Upvotes: 0
Reputation: 5572
PropertiesConfiguration interprets ',' as a value separator.
Upvotes: 1