PropertiesConfiguration - Использование "/" в значении свойства - PullRequest
1 голос
/ 17 марта 2011

Я использую PropertiesConfiguration для загрузки и хранения значений свойств.

Если я использую символ '/' в значении свойства, он сохраняется как '\ /'. Не могли бы вы помочь мне сохранить только '/' вместо '\ /'? Я что-то здесь упускаю?

PropertiesConfiguration databaseProperties;
databaseProperties = new PropertiesConfiguration("Properties.properties");
databaseProperties.setProperty("PropName", "jdbc:sqlserver://");
databaseProperties.save();

После сохранения мой файл свойств имеет значение

PropName = jdbc:sqlserver:\/\/

Спасибо

Ответы [ 5 ]

2 голосов
/ 07 ноября 2014

Я использовал 1.10 версию commons-configuration и отлично работает:

<dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>          
    <version>1.10</version>
</dependency>
2 голосов
/ 17 марта 2011

Это связано с тем, что "/" необходимо экранировать, чтобы он мог вернуться обратно в систему.Вы могли бы открыть файл обратно и удалить эти значения, но это вызовет проблемы у вас при следующей попытке открыть его.

2 голосов
/ 17 марта 2011

Экранирование / выполняется для соответствия требованиям формата файла свойств. Этот формат описан в JavaDoc Properties.load(Reader).

Если это не , что вы хотите, тогда вам не нужен файл свойств, а какой-то другой (возможно, похожий) формат.

1 голос
/ 03 октября 2013

Что касается ответа Йоахима, я посмотрел на javadoc, с которым он связался, и даже проследовал по ссылкам, размещенным в нем, на ссылку на язык Java, и нигде не вижу, где косая черта ('/') в значении свойства будет нужно сбежать. Когда я использую java.util.Properties с его методами load () и save (), косые черты в значениях свойств не экранируются. В этом отношении двоеточия (':') также не используются, если они используются после первого разделителя ключа свойства.

Для собственного использования я обновил свою зависимость maven, чтобы использовать версию 2.0-SNAPSHOT для конфигурации общего пользования, и это, похоже, исправлено. Посмотрев на код (PropertiesConfiguration и PropertiesConfigurationLayout), меня не удивит, если это будет ошибка или изюминка в зависимости commons-lang. Конфигурация Commons 1.9 использует commons-lang 2.6, но конфигурация commons 2.0-SNAPSHOT использует commons-lang3.

1 голос
/ 17 марта 2011

Вы уверены, что это не похоже на

PropName=jdbc\:sqlserver\://

а вы набрали этот вопрос по памяти? / обычно не является экранированным символом в файле свойств, но : - это.

Возможно, тот факт, что вы не используете файл java.util.Properties, имеет к этому отношение. Авторы PropertiesConfiguration, вероятно, немного изменили загрузку / сохранение, чтобы создать файлы свойств, которые лучше обрабатывают символ / при чтении в виде сценариев оболочки.

Некоторые системы читают в файлах свойств как «исходные сценарии оболочки», чтобы предоставить ориентированные на оболочку инструменты командной строки, которые совместимы с настройками файлов свойств java-программы. Если это так, то экранирование / предотвратит его использование в качестве разделителя каталогов в определенных контекстах сценария оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...