在我的基于 OSGi 的 Java 应用程序中,我正在开发一个包,以便为系统的其余部分提供对文件系统的访问。除了提供对用户主目录的访问之外,我还希望提供对非用户特定区域的访问。该区域的确切用途尚未确定,但不会用于首选项(由不同的捆绑包处理),但它可用于存储可能在运行时更改的数据。
我打算为此目的使用以下目录:
- Windows Vista 和 Windows 7 :“\ProgramData”。
- Windows XP :“\Documents and Settings\所有用户”。
- Mac OS X :“/库/应用程序支持”。
Linux 中合理的等价物在哪里?如何从我的 Java 代码中处理它?
原文由 William 发布,翻译遵循 CC BY-SA 4.0 许可协议
这取决于您计划存储的数据类型。这个答案的前提是您在运行时存储和修改数据。
与其他人的建议相反,我建议不要使用
/usr/share
进行存储。从 文件系统层次标准:当您修改数据时,这违背了
/usr
子系统的只读性质。存储应用程序状态数据的一个看似更好的地方是
/var
,或者更具体地说是/var/lib
。这也来自 Hierarchy Standard 。您可以创建一个/var/lib/myapp
,或者如果您还使用锁定文件或日志之类的东西,您可以利用/var/lock
或/var/log
。更深入地了解整个标准(链接到上面) - 您可能会找到一个适合您想要做得更好的地方。
像 Steve K 一样,我也建议使用 Preferences API 来获取应用程序偏好数据。