Простой, кроссплатформенный, чтобы получить известные пути к рабочему столу в Java?

Я ищу простой кроссплатформенный способ на JVM получить соответствующие каталоги для хранения настроек приложения и данных кеша. Например, в Linux по спецификациям XDG:

  • конфиг в ~/.config/appname
  • кэш в ~/.cache/appname

Материалы Windows идут в C\Users\user\Application Data или что-то в этом роде (на Win 7); Я понимаю, что Mac помещает вещи под ~/Library/Application Settings.

Есть ли кросс-платформенный вызов для получения этих путей? Я не смог найти его, хотя я нахожу несколько вопросов по этому поводу. Есть ли какая-то библиотека, в которой реализована правильная логика для большинства распространенных настольных платформ?

В худшем случае я могу просто найти user.home и представить, что все это среда Linux на основе XDG. Но если легко получить нужные каталоги для ОС пользователя, я бы хотел это сделать.


person Michael Ekstrand    schedule 26.10.2012    source источник


Ответы (2)


В основном мы настраиваем служебный класс, который предоставляет эту информацию, в основном на основе системных свойств user.home и os.name.

У нас есть ряд методов, которые позволяют нам создать местоположение пути, что-то вроде...

SystemUtilities.getApplicationSettingsPath("Name of my awesome app");
person MadProgrammer    schedule 26.10.2012

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

Этот класс содержит некоторые методы, которые могут оказаться полезными, например getHomeDirectory() и getDefaultDirectory(). Этот класс используется JFileChooser для интерфейсов Swing. Я знаю, что это не указывает напрямую на каталоги конфигурации и кеша, но это может быть шагом в правильном направлении для вас.

Для своих собственных приложений я использую следующий лучший подход, пытаясь сделать все конфигурации и настройки, содержащиеся в самом приложении, т.е. создайте каталог «config» в каталоге, где установлено приложение. Несмотря на то, что это не центральное место для конфигурации всей ОС, по крайней мере, оно держит его в контексте приложения Java.

person wattostudios    schedule 26.10.2012