独立于平台的文件存储Java
我正在制作一个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:独立于平台的文件存储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)并向其附加正确的文件路径)。然
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/)。