平台无关文件存储Java

时间:2013-04-12 22:51:26

标签: java cross-platform persistence file-storage

我正在制作一个Java游戏,在标准应用程序数据存储目录中存储选项和LWJGL jar(我认为在Windows上是C:\ Users \ user \ AppData \ roaming \ application,在Linux上是〜/ .application,以及〜/ Mac上的库/首选项)。目前我只使用System.getProperty(os.name)并使用if-else选择正确的文件路径(使用system.getProperty(user.home)并将正确的文件路径附加到它)。但是,这可能不适用于某些奇怪的操作系统,因为if-else在操作系统名称中找不到Windows,Mac或Linux,这似乎也是一种非常糟糕的方式来执行此操作(也就是if-否则假设操作系统是Linux,如果它不是Windows或Mac)。我尝试反编译Minecraft,它将应用程序数据和LWJGL jar存储在正确的路径中,但代码被混淆了。有没有更好的方法让我这样做,或者我应该坚持使用os.name上的if-else?

3 个答案:

答案 0 :(得分:2)

Java Preferences API是专为此目的而创建的。

答案 1 :(得分:1)

对于配置首选项,有Java Preferences API。

对于其他文件,我还没有找到解决方法。目前,最好的解决方案可能是根据user.home属性调度操作系统类型。

在Linux / Unix(不是Mac)上,您可能想要尊重XDG Base Directory specification

答案 2 :(得分:0)

这样的路径不应该在任何地方工作,即没有if-else-if:

String userHome = System.getProperty("user.home");
if (!userHome.endsWith("/")) {
  userHome += "/";
}

String targetPath = userHome + ".myapp/settings.properties";