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

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

  • Windows Vista&Windows 7:"\ProgramData".
  • Windows XP:"\Documents and Settings\All Users".
  • Mac OS X:"/Library/Application Support".

Linux中的合理类似功能在哪里?如何从Java代码中获得它的句柄?

推荐答案

这取决于你计划存储什么样的数据.这个答案的前提是,您正在运行时存储和修改数据.

与其他人的建议相反,我建议不要使用/usr/share存储.从Filesystem Hierarchy Standard人中:

/usr/share层次 struct 适用于所有人

在修改数据时,这违背了/usr子系统的只读特性.

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

从整体上更深入地审视标准(链接到上面)——你可能会找到一个更适合你想要做的事情的地方.

Steve K一样,我还建议对应用程序首选项数据使用Preferences API.

Linux相关问答推荐

无法下载Centos 7上的存储库的元数据

如何在Linux上获取clang中的模板实例化统计?

bind() 错误 98 - 地址已在使用中

重命名具有相同前缀的文件对中最旧的文件

匹配模式和提取

递归/详尽地将点插入字符串

为什么我的 Docker 进程不断在我的 Raspberry Pi 上重新启动?

如何为命令的所有选项启用无密码 sudo?

如何在 Linux 上使用 -grep 构建过滤间隔的命令

使用 Dockerfile RUN 执行某些操作但忽略错误

是否可以在 XTerm 或 Konsole 中使 stdout 和 stderr 输出具有不同的 colored颜色 ?

给定两个目录树如何找到相同的文件?

增加 mysql docker 中的 max_allowed_pa​​cket 大小

如何优雅地退出 X11 事件循环?

如何在 Ubuntu 12.04 中更改 Jenkins 安装的端口号

使用 ssh 判断远程主机上是否存在文件

docker images显示图像,docker rmi表示没有这样的图像或参考不存在

Mac OS X 中的 ldconfig 等效项?

如何显示正在运行的进程列表 Python?

将 jiffies 转换为毫秒