在 Linux 上存储应用程序数据(非用户特定)的位置

新手上路,请多包涵

在我的基于 OSGi 的 Java 应用程序中,我正在开发一个包,以便为系统的其余部分提供对文件系统的访问。除了提供对用户主目录的访问之外,我还希望提供对非用户特定区域的访问。该区域的确切用途尚未确定,但不会用于首选项(由不同的捆绑包处理),但它可用于存储可能在运行时更改的数据。

我打算为此目的使用以下目录:

Linux 中合理的等价物在哪里?如何从我的 Java 代码中处理它?

原文由 William 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 297
2 个回答

这取决于您计划存储的数据类型。这个答案的前提是您在运行时存储和修改数据。

与其他人的建议相反,我建议不要使用 /usr/share 进行存储。从 文件系统层次标准

/usr/share 层次结构适用于所有与体系结构无关的只读数据文件。

当您修改数据时,这违背了 /usr 子系统的只读性质。

存储应用程序状态数据的一个看似更好的地方是 /var ,或者更具体地说是 /var/lib 。这也来自 Hierarchy Standard 。您可以创建一个 /var/lib/myapp ,或者如果您还使用锁定文件或日志之类的东西,您可以利用 /var/lock/var/log

更深入地了解整个标准(链接到上面) - 您可能会找到一个适合您想要做得更好的地方。

像 Steve K 一样,我也建议使用 Preferences API 来获取应用程序偏好数据。

原文由 Rob Hruska 发布,翻译遵循 CC BY-SA 4.0 许可协议

这取决于。

  • 全局配置 → /etc/appname

  • 只读,独立于机器架构 → /usr/share/appname

  • 只读,机器特定 → /usr/lib/appname

  • 读写 → /var/lib/appname

不保证完整性。请检查 文件系统层次标准

原文由 starblue 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题