Где хранить файлы .properties для Java?
учебник по Java об использовании свойств рассказывает о том, как использовать класс Properties. В учебнике показано, что свойства записываются в файл с именем defaultProperties. Итак, что такое хорошее имя и местоположение для файла свойств?
Обычно я пишу одно из двух java-приложений: системную утилиту или пользовательскую программу. Я думаю, что большинство системных утилит будет иметь файл в /etc/myfile.properties
, и большинство пользовательских программ создадут ~/.myfile.properties
. Однако эти пути не будут работать в Windows. Существует ли более общий способ определения этих деталей, чтобы сделать платформу независимой от кода?
Ответы
Ответ 1
В этом случае я бы использовал API Preferences
вместо Properties
.
Preferences
позволяет сохранять/извлекать пользовательские и системные настройки и автоматически обрабатывать настойчивость для вас. Настойчивость является специфичной для платформы; для Windows он использует реестр, а для Unix он использует скрытые файлы.
Ответ 2
Если вы говорите о сохранении файла внешнего свойства для настройки своего приложения,
Я бы предложил
System.getProperty("user.home")+File.separator+ "yourappname"+File.separator+"name.properties"
если вы говорите о файле свойств, размещенном внутри вашего проекта, держите его в default package
.
ИЛИ
другие параметры используют XML файл, или Preference
Ответ 3
Вот несколько альтернативных решений:
- Прочитайте файл свойств из пути к классам
- Передайте путь к файлу свойств в качестве аргумента запуска для приложения
Чтение его из класса path дает вам гибкость, так как вы можете включить его в банку или указать ее при запуске приложения.
Ответ 4
Если вы связываете файл реквизита как часть приложения и предназначаетесь только для чтения, тогда поместите его в файл jar. Если вам нужно также обновить его, сделайте его доступным через файл:///url и передайте путь к файлу как аргумент JVM (-DfileUrl =...).
Посмотрите на это сообщение о том, как читать файл реквизита из JAR в пути к классам: Чтение файлов свойств из каталога JAR
Ответ 5
Использование jndi - хорошее решение. Конфигурация времени выполнения через консоль администратора веб-сервера. Webapp изменит настройки, как только вы получите свойство, вам не нужно перезапускать приложение.