【发布时间】:2014-04-10 14:26:50
【问题描述】:
我正在尝试在我的 Java 应用程序上遵循 XDG 目录规范。我已经将它用于应用程序数据:
protected String getDefaultDataDir() {
String rootPath = System.getenv("XDG_DATA_HOME");
if(rootPath == null) {
rootPath = System.getProperty("user.home")+S+".local"+S+"share";
}
return rootPath+S+Pinocchio.PLATFORMNAME;
}
( S 是一个常量,包含 System.getProperty("file.separator"))
我现在想将文档存储在用户文档的文件夹中。但我没有名为 XDG_DOCUMENTS_DIR 的环境变量。我有具有该 XDG 配置的“.config/user-dirs.dirs”文件,以及直接返回该路径的“xdg-user-dir DOCUMENTS”。
更糟糕的是,默认文档目录取决于用户区域设置。
在 java 应用程序上使用配置的 Documents 目录的最佳方式是什么?
【问题讨论】:
-
您提到“默认文档目录取决于用户区域设置”。这些信息存储在哪里?即当前用户区域设置以及每个区域设置的路径等(我只是想准确了解问题所在)
-
恐怕你要么必须使用
ProcessBuilder来运行xdg-user-dir,要么自己解析.config/user-dirs.dirs。 -
@DenisTulskiy 你是对的。我的第一反应也是建议从代码中运行
xdg-user-dir。但是我仍然想知道本地化,即 user locale “business” 是如何适应的。因此等待更多细节...... -
@TheCodeArtist xdg-user-dir 和 xdg-user-dirs-update 管理它。在我的 Debian 机器上,这些默认目录列在 /etc/xdg/user-dirs.defaults 上。然后应用程序使用它们的 i18n 文件翻译每个路径元素,例如 /usr/share/locale/es/LC_MESSAGES/xdg-user-dirs.mo 用于西班牙语翻译。你问的是这个吗?
-
然后简单地运行
xdg-user-dir并解析它的输出应该适合你。查看此answer 以了解如何从 java 运行可执行文件并捕获它返回的输出。
标签: java linux gnu freedesktop.org xdgutils