与平台无关的方式来获取存储程序数据的路径

时间:2014-01-02 15:09:21

标签: java cross-platform persistence

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

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

2 个答案:

答案 0 :(得分:2)

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

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

package our.com.main;

将写入子目录our/com/main

答案 1 :(得分:2)

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

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

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

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