在 Linux 上存储应用程序数据(非用户特定的)的位置
- 2024-11-07 08:55:00
- admin 原创
- 28
问题描述:
在我的基于OSGi的 Java 应用程序中,我正在开发一个包,以便为系统的其余部分提供对文件系统的访问权限。除了提供对用户主目录的访问权限之外,我还希望提供对非用户特定区域的访问权限。这个区域的具体用途尚未确定,但它不会用于首选项(由不同的包处理),但它可能用于存储在运行时可能发生变化的数据。
我打算为此目的使用以下目录:
Windows Vista和Windows 7:“\ProgramData”。
Windows XP:“\Documents and Settings\All Users”。
Mac OS X:“/Library/Application Support”。
Linux 中合理的等效物在哪里以及如何从我的 Java 代码中获取它?
解决方案 1:
这取决于您计划存储哪种数据。此答案的前提是您在运行时存储和修改数据。
与其他人的建议相反,我建议不要将其用于/usr/share
存储。根据文件系统层次结构标准:
/usr/share 层次结构适用于所有只读架构独立数据文件。
当您修改数据时,这违背了子系统的只读特性/usr
。
存储应用程序状态数据似乎更好的地方是/var
,或者更具体地说是/var/lib
。这也来自层次结构标准。您可以创建一个/var/lib/myapp
,或者如果您还使用锁定文件或日志之类的东西,则可以利用/var/lock
或/var/log
。
深入了解整个标准(链接至上面)——您可能会找到更适合您想要做的事情的地方。
与 Steve K 一样,我也建议使用 Preferences API 来获取应用程序偏好数据。
解决方案 2:
这取决于。
全局配置 → /etc/appname
只读,独立于机器架构 → /usr/share/appname
只读,特定于机器 → /usr/lib/appname
读写 → /var/lib/appname
不保证完整性。请检查文件系统层次结构标准。
解决方案 3:
由于您正在使用 Java,请查看Preferences API。
从介绍开始:
应用程序需要首选项和配置数据来适应不同用户和环境的需求。java.util.prefs 包为应用程序提供了一种存储和检索用户和系统首选项和配置数据的方法。数据持久存储在依赖于实现的后备存储中。有两个独立的首选项节点树,一个用于用户首选项,一个用于系统首选项
我会让内置 API 完成这项工作。
解决方案 4:
freedesktop.org (以前称为 X Desktop Group)项目在 XDG 基本目录规范中为此定义了一些标准。
对于你的情况,我会看一下$XDG_DATA_DIRS
:
$XDG_DATA_DIRS
定义按优先顺序排列的一组基本目录,用于在基本目录之外搜索数据文件$XDG_DATA_HOME
。目录中的目录$XDG_DATA_DIRS
应以冒号“:”分隔。如果未设置或为空,则应使用
$XDG_DATA_DIRS
等于的值。/usr/local/share/:/usr/share/
我热烈建议阅读XDG 基础目录规范。
解决方案 5:
根据文件系统层次结构标准
(截至 2015 年 7 月似乎已更新且正确)...
假设数据文件被认为不满足
/tmp
或/var/tmp
那么/usr/local/share/theApp
或的要求/usr/local/theApp
。
解决方案 6:
在/usr/share或/usr/local/share文件夹中。
解决方案 7:
如果它不是特定于用户的,您可能可以将其存储在/usr/share/appname下
解决方案 8:
您可以使用 System.getProperty("user.home") 来获取用户主页,这样它就更加独立于平台了。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件