在Java应用程序上使用XDG目录规范

问题描述 投票:0回答:3

我正在尝试在我的 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 应用程序上使用配置的文档目录的最佳方式是什么?

java linux gnu freedesktop.org xdgutils
3个回答
4
投票

在寻找这个问题的答案时,我发现了xdg-java。我还没有测试过它,但似乎完全符合你(和我)想要的。

它尚未实现所有规范,但它确实实现了我现在需要的规范,我猜作者会接受补丁。


2
投票

Gnome 上有 java-gnome 支持库,它正在进行本机调用以更好地与 gnome 集成。它可以通过调用

Glib.getUserSpecialDir
来获取用户目录的路径。我自己还没有尝试过这个,如果您计划在程序中使用更多桌面集成功能,可能值得一试。


0
投票

看来xdg-java被放弃了。相反,您可以使用 ssedirectories-jvm (https://github.com/dirs-dev/directories-jvm):

dev.dirs:目录:26

© www.soinside.com 2019 - 2024. All rights reserved.