【问题标题】:Simple, cross-platform to get well-known desktop paths in Java?简单的跨平台获取 Java 中知名的桌面路径?
【发布时间】:2012-10-16 06:49:49
【问题描述】:

我正在寻找一种简单的跨平台方式,在 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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-11-16
        • 1970-01-01
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多