Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
独立于平台的文件存储Java_Java_Cross Platform_Persistence_File Storage - Fatal编程技术网

独立于平台的文件存储Java

独立于平台的文件存储Java,java,cross-platform,persistence,file-storage,Java,Cross Platform,Persistence,File Storage,我正在制作一个Java游戏,它将选项和LWJGL JAR存储在标准应用程序数据存储目录中(我认为Windows上是C:\Users\user\AppData\roaming\application,Linux上是~/.application,Mac上是~/Library/Preferences)。目前,我只使用System.getProperty(os.name)并使用if-else来选择正确的文件路径(使用System.getProperty(user.home)并向其附加正确的文件路径)。然

我正在制作一个Java游戏,它将选项和LWJGL JAR存储在标准应用程序数据存储目录中(我认为Windows上是C:\Users\user\AppData\roaming\application,Linux上是~/.application,Mac上是~/Library/Preferences)。目前,我只使用System.getProperty(os.name)并使用if-else来选择正确的文件路径(使用System.getProperty(user.home)并向其附加正确的文件路径)。然而,这在一些奇怪的操作系统上可能不起作用,因为if-else在操作系统名称中找不到Windows、Mac或Linux,而这在一般情况下似乎也是一种非常糟糕的方式(如果不是Windows或Mac,if-else还假设操作系统是Linux)。我尝试反编译Minecraft,它将应用程序数据和LWJGL JAR存储在正确的路径中,但是代码被混淆了。有没有更好的方法可以做到这一点,或者我应该在os.name上使用if-else吗?

像这样的路径不应该无处不在,也就是说,如果没有if-else-if:

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

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

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

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

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

是专门为此目的创建的。是专门为此目的创建的。对于配置首选项,有Java首选项API

对于其他文件,我还没有找到解决方案。目前,最好的解决方案可能是基于
user.home
属性在操作系统类型上进行调度,并提供回退


在Linux/Unix(不是Mac)上,您可能希望遵守。

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

对于其他文件,我还没有找到解决方案。目前,最好的解决方案可能是基于
user.home
属性在操作系统类型上进行调度,并提供回退


在Linux/Unix(不是Mac)上,您可能希望遵守。

是否确实需要将这些文件存储在特定位置?另请参见:1)“此类允许应用程序存储和检索用户和系统首选项及配置数据。这些数据永久存储在依赖于实现的备份存储中。”2)适用于JWS应用程序的。3) 小程序的Cookie。是否确实需要将这些文件存储在特定位置?另请参见:1)“此类允许应用程序存储和检索用户和系统首选项及配置数据。此数据永久存储在依赖于实现的备份存储中。”2)JWS应用程序的。3) 小程序的Cookie。这应该适用于所有位置,但不适用于存储首选项的标准位置(如Windows上的user.home/AppData/roaming/appName/)。这应该适用于所有位置,但不适用于存储首选项的标准位置(如Windows上的user.home/AppData/roaming/appName/)。