Конфигурация apache commons загружает свойство до символа "," - PullRequest
15 голосов
/ 10 июня 2011

Я хочу загрузить конфигурацию (конфигурацию apache commons) из файла свойств.Моя программа:

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

В my.properties У меня есть

 myValue=value,

с запятой

Когда я запускаю программу, вывод будет value, а не value, with comma.Похоже, значение загружается до , символа.

Есть идеи?

Ответы [ 5 ]

13 голосов
/ 10 июня 2011

Это поведение четко задокументировано , т. Е. Что PropertiesConfiguration рассматривает значение с запятой как множественные значения, что позволяет разумно интерпретировать такие вещи, как:

fruit=apples,banana,oranges

.Исправление (из документа) заключается в добавлении обратной косой черты, чтобы избежать запятой, например,

myKey=value\, with an escaped comma
9 голосов
/ 10 июня 2011

Проверка Javadoc .Вы должны установить setDelimiterParsingDisabled (true), чтобы отключить анализ списка свойств.

3 голосов
/ 12 декабря 2017

На самом деле propConfig.setDelimiterParsingDisabled (true) работает, но вы должны загрузить файл конфигурации после этого параметра, например:

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

, если ваш код такой:новая PropertiesConfiguration (propertiesFile);propConfig.setDelimiterParsingDisabled (true);

тогда настройка не будет работать

0 голосов
/ 28 июня 2015

Если вы ставите \ перед ,, вы избегаете его и можете прочитать значение

Пример:

myValue=value\, with comma

Вы прочитали = value, with comma без проблем

0 голосов
/ 10 июня 2011

PropertiesConfiguration интерпретирует ',' как разделитель значений.

...