【问题标题】:Platform-independent way to get a path to store program data获取存储程序数据路径的独立于平台的方式
【发布时间】:2014-01-02 15:09:21
【问题描述】:

是否有一种独立于平台的方式来获取在 Java 中存储程序数据的路径?

这无疑是一个非常基本的问题,但我似乎无法在任何地方找到答案。我正在寻找存储用户数据(例如用户偏好或历史数据输入)的路径。在 Windows 上,我们通常会将其存储在 C:\Program Files\APPNAMEC:\Program Files (x86)\APPNAMEC:\ProgramData\APPNAME 中,具体取决于操作系统和架构。在 Unix 上,我们可以根据上下文将首选项存储在 /etc/APPNAME/opt/APPNAME 中。在 Mac 上,我们有一个特殊的柜子来存储程序的数据。在java中,我们如何以独立于平台的方式获得这样的位置?

【问题讨论】:

标签: java cross-platform persistence


【解决方案1】:

系统属性user.home 在大多数桌面系统中应该是相当标准的。

System.out.println(System.getProperty("user.home"));

请注意,这是运行 Java 进程的用户 - 因此在服务器端 Java 进程的情况下,您需要将应用用户的信息存储在自己的数据结构中,因为您的应用的用户是未知的到操作系统。

关于系统范围的存储位置,您可能需要检测操作系统版本并计算路径。另一个问题是您很可能需要提升权限才能写入系统范围的位置。

【讨论】:

    【解决方案2】:

    寻找将设置存储在user.home 的(子)目录中。它不仅是应用程序的地方。可以合理地期望具有读写权限,但它是跨平台的。

    子目录可能基于类的完全限定名称或包名称,以防止冲突。即。

    package our.com.main;
    

    将写入子目录our/com/main

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多