简单、跨平台,在 Java 中获取众所周知的桌面路径?

问题描述 投票:0回答:2

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

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

Windows 的东西进入

C\Users\user\Application Data
或类似的东西(在 Win 7 上);我猜 Mac 将东西放在了
~/Library/Application Settings
下。

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

最坏的情况,我可以只查找

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

java settings desktop freedesktop.org
2个回答
2
投票

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

此类包含一些可能有用的方法,例如

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

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


1
投票

我们基本上设置了一个提供此信息的实用程序类,主要基于

user.home
os.name
系统属性。

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

SystemUtilities.getApplicationSettingsPath("Name of my awesome app");
© www.soinside.com 2019 - 2024. All rights reserved.