通常从Java应用程序保存外部数据的位置?

时间:2014-05-19 14:36:15

标签: java io

好的,问题很简单。

我有一个Java程序,我将一些保存文件提取到外部位置。

现在,我使用C:/ApplicationName,但这是一种非常糟糕的方法。

我知道很多可以使用的地点,例如:

%Appdata%
C:\Program Files (x86)
C:\Users\Users\Documents (Ive seen some indie games use this.)

其他地点?

但我无法弄清楚何时使用正确的。

如果我想支持Linux和OSX,是否有一个支持它的库,或者我是否需要手动将它们包装到带有System.getProperties("os.name")的if / else中?

2 个答案:

答案 0 :(得分:2)

请记住,有时候当游戏保存到特定目录时,它们不会构建为跨平台。

有两种方法可以做到这一点。第一个(也是我个人喜欢的版本)是保存在应用程序的目录中。这也具有便携的优点。但是,保存链接到应用程序,因此如果用户删除应用程序并稍后重新安装,他们将丢失数据(这可能是也可能不是好事)。

另一种选择是使用System.getProperty()

具体来说,您可以使用:

System.getProperty("user.dir");
System.getProperty("user.home");
System.getProperty("user.name");

找出放置文件的位置。

这将更复杂,因此首选方法。

答案 1 :(得分:1)

如果用户不需要直接访问数据,例如存储的应用程序/游戏状态数据,则将其存储在用户的应用程序数据目录中是合适的。试试这个:

1)确定操作系统。

2)获取用户主目录。

System.getProperty("user.home");

3)附加特定于操作系统的应用程序目录:

Mac:/Library/Application Support/MyApp

Windows:\\Application Data\\MyApp

Linux:MyApp(我知道这里没有约定)

如果需要导出数据,例如从应用程序保存文档,则通过文件对话框询问用户存储文件的位置,默认为文档目录。