2012-07-03 5 views
2

Я работаю над игровым проектом на Java, и мне нужно сохранить файл config.ini где-то, кроме исполняемого jar. Я знаю, что люди обычно сохраняют их внутри AppData в Windows, но я бы хотел, чтобы моя игра полностью переносилась без ограничений ОС. Но для этого мне нужно было бы знать, где хранить такой файл.Альтернативы AppData (Windows) при хранении файлов на другой ОС

Я хотел бы знать, где люди обычно хранят такие файлы в других операционных системах UNIX, в основном Ubuntu или Macintosh (OS X).

Я также был бы признателен, если бы вы могли объяснить мне немного больше о каталогах относительно таких ОС, поскольку у меня нет ни одной из этих систем. Я имею в виду, например, что в Windows люди обычно бросают свои приложения на свои рабочие столы, а пользователи Mac помещают их в папку «Приложения». В случае с Mac, создание папки внутри этого каталога приложения будет так же плохо, как создание папки на рабочем столе Windows?

Кроме того, в случае Ubuntu, где будет размещен эквивалент AppData на Windows? А как насчет случая с Максом? Сохраняли бы скриншоты игры или создавали бы save игры внутри AppData или эквиваленты были бы плохой идеей? Я действительно не хочу использовать обычный каталог Program Files.

И, наконец, более кодовая проблема. Я знаю, что в Java вы можете получить AppData расположение окна и конкатенации такой путь, как код ниже:

Path FOO = Paths.get(System.getenv("AppData"), "BAR");

насчет Mac и Ubuntu? И как я смогу проверить, использует ли пользователь Windows или Ubuntu?


Thank you very much, 
-Renato
+1

Вы считали API Java Preferences? http://docs.oracle.com/javase/1.4.2/docs/guide/lang/preferences.html (для части config.ini вопроса, а не для сохранения игр). – Thilo

+0

Ну, я действительно не знаком с Java Preference API. Дело в том, что я хочу, чтобы пользователь действительно мог редактировать файл 'config.ini' удобным для пользователя способом, как это обычно бывает при работе с играми AAA. Я уже готов файл 'config.ini', а также мини-язык, который проверяет конфигурации, написанные в таком файле, и применяет их к игре. Кроме того, как вы упомянули, сохранить игры все равно нужно будет где-то хранить. Но все равно спасибо! –

ответ

2

Для большинства Unix-подобных операционных систем, в том числе Ubuntu и других дистрибутивов Linux, вы должны следовать XDG Base Directory specification, который описывает, где пользовательские настройки должны быть сохранены (а именно, значение переменной окружения $XDG_CONFIG_HOME если он существует, возвращается к ~/.config/). Этот каталог предназначен для конфигурации. Сохранить игры следует в $XDG_DATA_HOME, или если не указано ~/.local/share, аналогично.

OS X также Unix-подобный, но использует свои собственные пути. Это объясняется в Equivalents of XDG_CONFIG_HOME and XDG_DATA_HOME on Mac OS X?.

+0

Хорошо, так как это будет работать на Java? Будет ли это что-то вроде System.getenv («$ XDG_CONFIG_HOME»); '? Я знаю, что я много прошу, но это будет огромной помощью. Благодарю. –

+0

Это должно быть 'System.getenv (« XDG_CONFIG_HOME »)' (без знака доллара), но тогда вы должны проверить «null» и по умолчанию '~/.config'. Там может быть библиотека, которая сделает это за вас. –

+0

Хорошо. Я попробую это и Google за дополнительной информацией, если у меня возникнут сомнения. Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^