简单、跨平台的Java桌面路径?

简单、跨平台的Java桌面路径?,java,settings,desktop,freedesktop.org,Java,Settings,Desktop,Freedesktop.org,我正在寻找一种简单、跨平台的方法,在JVM上获取用于存储应用程序设置和缓存数据的适当目录。例如,在XDG规范下的Linux上: 在~/.config/appname 缓存在~/.cache/appname Windows stuff进入C\Users\user\Application Data或类似的位置(在Win7上);据我推测,Mac电脑将内容置于~/Library/Application设置下 是否有跨平台呼叫以获取这些路径位置?我还没有找到一个,尽管我发现有几个问题在问。是否有一些库

我正在寻找一种简单、跨平台的方法,在JVM上获取用于存储应用程序设置和缓存数据的适当目录。例如,在XDG规范下的Linux上:

  • ~/.config/appname
  • 缓存在
    ~/.cache/appname
Windows stuff进入
C\Users\user\Application Data
或类似的位置(在Win7上);据我推测,Mac电脑将内容置于
~/Library/Application设置下

是否有跨平台呼叫以获取这些路径位置?我还没有找到一个,尽管我发现有几个问题在问。是否有一些库为大多数常见的桌面平台实现了正确的逻辑


最糟糕的情况是,我只需查找
user.home
,然后假装一切都是基于XDG的Linux环境。但是,如果很容易为用户的操作系统获取正确的目录,我愿意这样做。

我知道,
FileSystemView
类是唯一一个包含对类似这样的常规目录的访问的类,并且是跨平台的。请参阅文档

此类包含一些可能有用的方法,例如
gethomeditory()
getDefaultDirectory()
。此类由
JFileChooser
用于Swing接口。我知道它不会直接指向config和cache目录,但对您来说,这可能是朝着正确方向迈出的一步


对于我自己的应用程序,我采取了下一个最好的方法,尝试创建应用程序本身包含的所有配置和设置,即在安装应用程序的目录下创建一个“config”目录。尽管它不是整个操作系统配置的中心位置,但至少它将其保存在java应用程序上下文中。

我们基本上建立了一个实用程序类来提供这些信息,主要基于
user.home
OS.name
系统属性

我们有一系列的方法来建立路径位置,比如

SystemUtilities.getApplicationSettingsPath("Name of my awesome app");