8

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

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

Windows 的东西进入C\Users\user\Application Data或类似的东西(在 Win 7 上);我收集到 Mac 把东西放在~/Library/Application Settings.

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

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

4

2 回答 2

2

我们基本上设置了一个提供此信息的实用程序类,主要基于user.homeandos.name系统属性。

我们有一系列方法可以让我们建立一个路径位置,比如......

SystemUtilities.getApplicationSettingsPath("Name of my awesome app");
于 2012-10-26T01:29:47.213 回答
2

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

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

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

于 2012-10-26T01:24:34.493 回答