简单,跨平台,以获得Java中众所周知的桌面路径?

Mic*_*and 8 java settings desktop freedesktop.org

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

  • 配置 ~/.config/appname
  • 缓存在 ~/.cache/appname

Windows的东西进入C\Users\user\Application Data或某些(在Win 7上); 我认为Mac把东西放进去了~/Library/Application Settings.

是否有跨平台调用来获取这些路径位置?我找不到一个,虽然我发现了几个问题.是否有一些库为大多数常见桌面平台实现了正确的逻辑?

最糟糕的情况是,我可以抬起头来user.home假装一切都是基于XDG的Linux环境.但是,如果很容易为用户的操作系统获取正确的目录,我想这样做.

wat*_*ios 2

该类FileSystemView是我所知道的唯一一个包含对此类通用目录的访问权限的类,并且是跨平台的。参考文档请参阅此处的

此类包含一些可能有用的方法,例如getHomeDirectory()getDefaultDirectory()。该类由JFileChooserSwing 接口使用。我知道它并不直接指向配置和缓存目录,但这可能是朝着正确方向迈出的一步。

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