Ответ 1
Проверьте Javadoc. Вы должны установить setDelimiterParsingDisabled (true), чтобы отключить анализ списка свойств.
Я хочу загрузить конфигурацию (конфигурацию 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
интерпретировать разумно. Исправление (из документа) заключается в добавлении обратной косой черты для экранирования запятой, например,
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
без проблем