Альтернативы AppData (Windows) при хранении файлов на других ОС
Я работаю над игровым проектом на Java, и мне нужно сохранить config.ini
файл где-то кроме исполняемого файла jar
место нахождения. Я знаю, что люди обычно сохраняют их внутри AppData
на Windows, но я хотел бы сделать мою игру полностью переносимой без каких-либо ограничений ОС. Но для этого мне нужно знать, где хранить такой файл.
Я хотел бы знать, где люди обычно хранят такие файлы в других операционных системах UNIX, в основном в Ubuntu или Macintosh (OS X).
Я также был бы признателен, если бы вы могли объяснить мне немного больше о каталогах таких ОС, поскольку я не владею ни одной из этих систем. Под этим я подразумеваю, например, что в Windows люди обычно размещают свои приложения на своих настольных компьютерах, а пользователи Mac помещают их в папку "Приложения". В случае Mac, будет ли создание папки внутри этого каталога приложений таким же плохим, как создание папки на рабочем столе Windows?
Кроме того, в случае с Ubuntu, где будет находиться эквивалент AppData в Windows? А как насчет дела Mac? Сохранение скриншотов игры или создание сохраненных игр внутри AppData
или эквиваленты будут плохой идеей? Я не очень хочу использовать обычный Program Files
каталог.
И, наконец, более сложная проблема с кодом. Я знаю, что в Java вы можете получить расположение AppData в Window и объединить такой путь, как показано ниже:
Path FOO = Paths.get(System.getenv("AppData"), "BAR");
А как насчет Mac и Ubuntu? И как я смогу проверить, использует ли пользователь Windows или Ubuntu?
Большое спасибо, -Renato
1 ответ
Для большинства Unix-подобных операционных систем, включая Ubuntu и другие дистрибутивы Linux, вы должны следовать спецификации XDG Base Directory, которая описывает, где должны храниться настройки пользователя (а именно, значение переменной среды). $XDG_CONFIG_HOME
если он существует, отступая к ~/.config/
). Этот каталог предназначен для настройки. Сохранить игры должны идти в $XDG_DATA_HOME
или если не указано ~/.local/share
, так же.
OS X также Unix-подобен, но использует свои собственные пути. Это объясняется в эквивалентах XDG_CONFIG_HOME и XDG_DATA_HOME в Mac OS X?,