Найти каталог для "данных приложения" на Linux и Macintosh - PullRequest
14 голосов
/ 03 июля 2011

У меня есть игровой движок, основанный на LWJGL, и для его запуска мне нужно разместить необходимые нативные библиотеки на компьютере пользователя.В Windows я делаю это, находя каталог Application Data по:

System.getenv("APPDATA");

, и все работает легко и красиво.Я создаю объект File, при необходимости вызываю mkDir и записываю файлы, если их еще нет на компьютере.

(Примечание: созданный каталог не должен быть временным файлом, так как я хотел бы сохранитьизвлеченные файлы для будущих запусков. Кроме того, создание этого каталога дает простую и удобную папку для сохраненных игр и других подобных данных.)

Однако я хотел бы сделать что-то подобное, если компьютерMacintosh или Linux, но я не так хорошо знаком с тем, как это сделать с этими двумя системами, и я не очень хорош в тестировании.Мой текущий метод поиска целевого каталога такой:

private static String defaultDirectory()
{
    String OS = System.getProperty("os.name").toUpperCase();
    if (OS.contains("WIN"))
        return System.getenv("APPDATA");
    else if (OS.contains("MAC"))
        return System.getProperty("user.home") + "/Library/Application "
                + "Support";
    else if (OS.contains("NUX"))
        return System.getProperty("user.home");
    return System.getProperty("user.dir");
}

Итак, это правильный способ сделать это?Я пытаюсь обратиться в службу поддержки приложений на Mac (я узнал, что это эквивалент папки AppData в Windows), и я пытаюсь использовать аналогичную папку в Linux, но я не уверен, что "пользователь".дом "находит правильный.

Ответы [ 2 ]

6 голосов
/ 03 июля 2011

это должно работать. только одно: в linux предпочтительнее хранить настройки в скрытой папке в пользовательском каталоге. Так что для linux, либо поместите вашу папку в $ HOME / .config, либо начните имя с ., чтобы скрыть ее.

4 голосов
/ 29 июля 2012

Как уже говорилось в Linux, вы должны / могли бы поместить свои данные в домашний каталог.

Однако у меня есть для вас совет: «APPDATA», к сожалению, не всегда находит правильный каталог внесколько версий Windows.AFAIK единственный известный мне способ, как я знаю, как сделать это правильно, - это вызвать функцию msdn SHGetFolderPath.

Пример: http://github.com/fab1an/appkit/blob/master/src/main/java/org/appkit/osdependant/OSFolders.java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...