我正在尝试在我的 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 应用程序上使用配置的文档目录的最佳方式是什么?
在寻找这个问题的答案时,我发现了xdg-java。我还没有测试过它,但似乎完全符合你(和我)想要的。
它尚未实现所有规范,但它确实实现了我现在需要的规范,我猜作者会接受补丁。
Gnome 上有 java-gnome 支持库,它正在进行本机调用以更好地与 gnome 集成。它可以通过调用
Glib.getUserSpecialDir
来获取用户目录的路径。我自己还没有尝试过这个,如果您计划在程序中使用更多桌面集成功能,可能值得一试。
看来xdg-java被放弃了。相反,您可以使用 ssedirectories-jvm (https://github.com/dirs-dev/directories-jvm):
dev.dirs:目录:26