Хорошие места для конфигурационного файла? (общий для пользователей, общий для каждой машины)
В настоящее время я пишу замену оболочки в 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, он удостоверится, что настройки записаны в то место, где это разрешено (например, домашний каталог пользователя или реестр).