【问题标题】:Alternatives to AppData (Windows) when storing files on other OS在其他操作系统上存储文件时 AppData (Windows) 的替代方案
【发布时间】:2012-07-03 10:40:18
【问题描述】:

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

我想知道人们通常将此类文件存储在其他 UNIX 操作系统上的什么位置,主要是 Ubuntu 或 Macintosh (OS X)。

如果您能详细解释一下有关此类操作系统的目录,我也将不胜感激,因为我不拥有这些系统中的任何一个。我的意思是,例如,在 Windows 中,人们通常将他们的应用程序放在桌面上,而 Mac 用户将它们放在应用程序文件夹中。在 Mac 的情况下,在该应用程序目录中创建一个文件夹会和在 Windows 桌面上创建一个文件夹一样糟糕吗?

另外,在 Ubuntu 的情况下,相当于 Windows 上的 AppData 的位置在哪里? Mac 的情况呢?保存游戏截图或在AppData 或等效项中创建保存游戏是个坏主意吗?我真的不想使用通常的Program Files 目录。

最后,一个更加代码方面的问题。我知道在 Java 中你可以获取 Window 的 AppData 位置并像下面的代码连接这样的路径:

Path FOO = Paths.get(System.getenv("AppData"), "BAR");

Mac 和 Ubuntu 呢?以及如何检查用户使用的是 Windows 还是 Ubuntu?


非常感谢,
-雷纳托

【问题讨论】:

  • 您考虑过 Java Preferences API 吗? docs.oracle.com/javase/1.4.2/docs/guide/lang/preferences.html(对于问题的 config.ini 部分,对于保存游戏来说不是那么多)。
  • 好吧,我对 Java Preference API 不是很熟悉。问题是,我希望用户实际上能够以用户友好的方式编辑config.ini 文件,就像人们在处理 AAA 游戏时通常所做的那样。我已经准备好一个config.ini 文件,以及一种检查写入此类文件的配置并将其应用于游戏的迷你语言。另外,正如您所提到的,保存游戏仍然需要存储在某个地方。不过还是谢谢!

标签: java operating-system appdata userappdatapath


【解决方案1】:

对于大多数类 Unix 操作系统,包括 Ubuntu 和其他 Linux 发行版,您应该遵循 XDG Base Directory specification,它描述了应该存储用户首选项的位置(即环境变量 $XDG_CONFIG_HOME 的值,如果它存在,回退到~/.config/)。此目录用于配置。保存游戏应该进入$XDG_DATA_HOME,或者如果没有指定~/.local/share,类似地。

OS X 也类似于 Unix,但使用自己的路径。 Equivalents of XDG_CONFIG_HOME and XDG_DATA_HOME on Mac OS X?对此进行了解释。

【讨论】:

  • 好的,那么这在 Java 中如何以代码方式工作?会不会是 System.getenv("$XDG_CONFIG_HOME"); 之类的东西?我知道我问了很多,但这会有很大的帮助。谢谢。
  • 应该是System.getenv("XDG_CONFIG_HOME")(没有美元符号),但是你必须检查null并默认为~/.config。可能有一个库可以为您执行此操作。
  • 好的。如果我有任何疑问,我会尝试并通过 Google 获取更多信息。谢谢!
猜你喜欢
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 2011-11-17
  • 2018-06-25
  • 1970-01-01
  • 2014-07-08
相关资源
最近更新 更多