Где хранить файлы .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 изменит настройки, как только вы получите свойство, вам не нужно перезапускать приложение.