在Java中获取知名桌面路径的简单跨平台方法?

8
我正在寻找一种简单的、跨平台的方式,在JVM上获取适当的目录来存储应用程序设置和缓存数据。例如,在Linux下,根据XDG规范:
- 配置文件在~/.config/appname - 缓存文件在~/.cache/appname Windows相关内容放在C\Users\user\Application Data等位置(在Win 7上);我了解到Mac将文件放在~/Library/Application Settings下。
是否有跨平台调用以获取这些路径位置?虽然我发现有几个问题在询问,但我还没有找到一个。是否有一些库已经实现了大多数常见桌面平台的正确逻辑?
最糟糕的情况是,我可以查找user.home并假装一切都是基于XDG的Linux环境。但如果能够轻松获取用户操作系统的正确目录,则希望这样做。
2个回答

2

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

这个类包含了一些可能有用的方法,比如 getHomeDirectory()getDefaultDirectory()。这个类被 Swing 接口中的 JFileChooser 使用。虽然它没有直接指向配置和缓存目录,但至少可以让你朝正确的方向前进一步。

对于我的应用程序,我采用了次优方案,尝试将所有的配置和设置都包含在应用程序本身内——即在安装应用程序的目录下创建一个名为“config”的目录。虽然它不是整个操作系统的配置中心位置,但至少它保持在 Java 应用程序上下文中。


2

我们基本上设置了一个实用类,提供这些信息,主要基于 user.homeos.name 系统属性。

我们有一系列的方法,允许我们构建路径位置,类似于...

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接