我正在寻找一种简单的跨平台方式,在JVM上获取用于存储应用程序设置和缓存数据的相应目录。例如,在Linux下的XDG规范:
~/.config/appname
~/.cache/appname
Windows内容进入C\Users\user\Application Data
或其他一些内容(在Win 7上);我认为Mac把东西放在~/Library/Application Settings
下。
是否有跨平台调用来获取这些路径位置?我找不到一个,虽然我发现了几个问题。是否有一些库为大多数常见桌面平台实现了正确的逻辑?
最糟糕的情况是,我可以查看user.home
并假装所有内容都是基于XDG的Linux环境。但是,如果很容易为用户的操作系统获取正确的目录,我想这样做。
答案 0 :(得分:2)
FileSystemView
类是我所知道的唯一一个包含对此类通用目录的访问权限的类,并且是跨平台的。请参阅文档here
此类包含一些可能有用的方法,例如getHomeDirectory()
和getDefaultDirectory()
。 JFileChooser
用于Swing接口。我知道它并没有直接指向配置和缓存目录,但它可能是朝着正确方向迈出的一步。
对于我自己的应用程序,我尝试将所有配置和设置包含在应用程序本身中,即采用次佳方法 - 即。在安装应用程序的目录下创建一个“config”目录。尽管它不是整个操作系统配置的中心位置,但至少它将它保留在java应用程序上下文中。
答案 1 :(得分:2)
我们基本上设置了一个提供此信息的实用程序类,主要基于user.home
和os.name
系统属性。
我们有一系列方法可以让我们建立一个路径位置,比如......
SystemUtilities.getApplicationSettingsPath("Name of my awesome app");