在我的基于OSGi的Java应用程序中,我正在开发一个包,以便为系统的其余部分提供对文件系统的访问.除了提供对用户主目录的访问之外,我还希望提供对非用户特定区域的访问.确切地说,这个区域将用于什么尚未确定,但它不适用于首选项(由不同的包处理),但它可能用于存储可能在运行时更改的数据.
我打算为此目的使用以下目录:
在Linux中哪一个是合理的等价物,我如何从我的Java代码中获取它?
Rob*_*ska 62
这取决于您计划存储的数据类型.这个答案是在运行时存储和修改数据的前提下.
与其他人的建议相反,我建议不要使用/usr/share存储空间.从文件系统层次结构标准:
/ usr/share层次结构适用于所有只读体系结构的独立数据文件.
在修改数据时,这违反了/usr子系统的只读性质.
存储应用程序状态数据的看似更好的位置将是/var,或更具体地说/var/lib.这也来自层次标准.您可以创建一个/var/lib/myapp,或者如果您还使用锁文件或日志之类的东西,您可以使用/var/lock或/var/log.
深入了解整个标准(与上面相关) - 您可能会找到一个适合您想做的更好的地方.
与Steve K一样,我也建议使用Preferences API来获取应用程序首选项数据.
sta*_*lue 37
这取决于.
全局配置 - >/etc/appname
只读,独立于机器架构 - >/usr/share/appname
只读,机器特定 - >/usr/lib/appname
读写 - >/var/lib/appname
不保证完整性,请检查文件系统层次结构标准.
既然您使用的是Java,那么您是否查看过Preferences API?
从介绍:
应用程序需要首选项和配置数据以适应不同用户和环境的需求.java.util.prefs包为应用程序提供了一种存储和检索用户和系统首选项和配置数据的方法.数据持久存储在依赖于实现的后备存储中.有两个独立的优先节点树,一个用于用户首选项,另一个用于系统首选项
我让内置的API完成工作.
该freedesktop.org(以前称为X桌面组)项目已在定义了一些标准,这XDG基本目录规范.
在你的情况下,我看看$XDG_DATA_DIRS:
$XDG_DATA_DIRS定义基于首选项的基本目录集,以搜索除$XDG_DATA_HOME基目录之外的数据文件.目录中$XDG_DATA_DIRS应该用冒号':'分隔.如果
$XDG_DATA_DIRS未设置或为空,/usr/local/share/:/usr/share/则应使用等于的值.
我热烈建议阅读XDG基本目录规范.
| 归档时间: |
|
| 查看次数: |
34053 次 |
| 最近记录: |