好的,问题很简单。
我有一个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中?
答案 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
(我知道这里没有约定)
如果需要导出数据,例如从应用程序保存文档,则通过文件对话框询问用户存储文件的位置,默认为文档目录。