Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.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 在其他操作系统上存储文件时,AppData(Windows)的替代方案_Java_Operating System_Appdata_Userappdatapath - Fatal编程技术网

Java 在其他操作系统上存储文件时,AppData(Windows)的替代方案

Java 在其他操作系统上存储文件时,AppData(Windows)的替代方案,java,operating-system,appdata,userappdatapath,Java,Operating System,Appdata,Userappdatapath,我正在用Java开发一个游戏项目,我需要将config.ini文件存储在可执行jar位置以外的其他位置。我知道人们通常将它们保存在Windows上的AppData中,但我想让我的游戏完全可移植,没有任何操作系统限制。但要这样做,我需要知道在哪里存储这样的文件 我想知道人们通常在其他UNIX操作系统(主要是Ubuntu或Macintosh(OSX))上把这些文件存储在哪里 如果你能多给我解释一下关于这些OSs的目录,我也会很感激,因为我没有这些系统。我的意思是,例如,在Windows中,人们通常将

我正在用Java开发一个游戏项目,我需要将
config.ini
文件存储在可执行
jar
位置以外的其他位置。我知道人们通常将它们保存在Windows上的AppData中,但我想让我的游戏完全可移植,没有任何操作系统限制。但要这样做,我需要知道在哪里存储这样的文件

我想知道人们通常在其他UNIX操作系统(主要是Ubuntu或Macintosh(OSX))上把这些文件存储在哪里

如果你能多给我解释一下关于这些OSs的目录,我也会很感激,因为我没有这些系统。我的意思是,例如,在Windows中,人们通常将应用程序放在桌面上,而Mac用户将它们放在应用程序文件夹中。在Mac的情况下,在应用程序目录中创建文件夹是否会像在Windows桌面上创建文件夹一样糟糕

另外,在Ubuntu的情况下,Windows上的AppData的等价物在哪里?那麦克的案子呢?保存游戏的屏幕截图或在AppData中创建save游戏是个坏主意吗?我真的不想使用通常的
程序文件
目录

最后,一个更明智的代码问题。我知道,在Java中,您可以获取窗口的AppData位置,并连接这样的路径,如以下代码所示:

Path FOO=Path.get(System.getenv(“AppData”),“BAR”)

Mac和Ubuntu呢?我怎样才能检查用户是使用Windows还是Ubuntu


非常感谢你,
-Renato对于大多数类似Unix的操作系统,包括Ubuntu和其他Linux发行版,您应该遵循,它描述了用户首选项应存储的位置(即,环境变量
$XDG\u CONFIG\u HOME
的值,如果存在,则返回到
~/.CONFIG/
)。此目录用于配置。保存游戏应进入
$XDG\u DATA\u HOME
或如果未指定
~/.local/share
,类似地


OSX也类似于Unix,但使用自己的路径。这将在中解释。

您是否考虑过Java首选项API?(对于问题的config.ini部分,不太适合保存游戏)。嗯,我对Java首选项API不是很熟悉。问题是,我希望用户能够以用户友好的方式编辑
config.ini
文件,就像人们处理AAA游戏时通常做的那样。我已经准备好了一个
config.ini
文件,还有一个迷你语言,可以检查写入该文件的配置并将其应用到游戏中。另外,正如您所提到的,保存游戏仍然需要存储在某个地方。不过还是要谢谢你!好的,那么在Java中,这在代码方面是如何工作的呢?它是否类似于
System.getenv($XDG_CONFIG_HOME”)?我知道我要求很多,但那将是巨大的帮助。谢谢。那应该是
System.getenv(“XDG\u CONFIG\u HOME”)
(没有美元符号),但是你必须检查
null
,并默认为
~/.CONFIG
。可能会有一个图书馆为你做这件事。如果我有任何疑问,我会尝试一下,谷歌会提供更多信息。谢谢 Thank you very much, -Renato