Хорошие места для конфигурационного файла? (общий для пользователей, общий для каждой машины)

В настоящее время я пишу замену оболочки в Java для Windows, и мое приложение в настоящее время создает файл конфигурации, используя

File userSettings = new File("Gyroscope.properties");

Однако, когда это выполняется окнами, текущий каталог устанавливается на C:\windows\System32\ и программа не имеет разрешения на запись в этот каталог.

Что будет лучшим местом для файла конфигурации для записи? Было бы предпочтительнее иметь его относительно jar-файла, однако я не знаю хорошего способа сделать это, и другие вопросы переполнения стека имели нечистое решение этой конкретной проблемы, поэтому я ищу другие места в качестве вариантов.

Конфигурация зависит от компьютера и должна быть общей для всех пользователей.

2 ответа

Я опишу возможное решение. Там должно быть несколько способов достичь этого.

Поместите свой конфигурационный файл рядом с вашим флягой. Поместите явно файл конфигурации в ваш classpath при вызове Java (например, java -cp .../Gyroscope.jar;.../Gyroscope.properties <your_main_class>).

Теперь вы можете получить доступ к вашему файлу свойств в качестве ресурса (ClassLoader.getSystemResourceAsStream("/Gyroscope.properties"). Используйте любой загрузчик классов, какой захотите, как только это будет удобно и удобно для вашей фактической реализации. Как только у вас будет входной поток, вы можете загрузить ваши свойства в объекте свойств, как обычно.

Надеюсь, это поможет.

Используйте класс Preferences, он удостоверится, что настройки записаны в то место, где это разрешено (например, домашний каталог пользователя или реестр).

Другие вопросы по тегам