2014-03-07 79 views
1

我正在嘗試遵循我的Java應用程序上的XDG目錄規範。我已經用它爲應用程序數據:在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(「文件分割符」)常數)

我現在想對用戶的文件存儲文檔夾。但是我沒有名爲XDG_DOCUMENTS_DIR的環境變量。我擁有具有該XDG配置的「.config/user-dirs.dirs」文件和直接返回該路徑的「xdg-user-dir DOCUMENTS」文件。

更糟糕的是,默認文檔目錄取決於用戶區域設置。

這是在java應用程序中使用配置的Documents目錄的最佳方式?

+0

您提到「默認文檔目錄取決於用戶區域設置」。這個信息存儲在哪裏?即當前用戶的語言環境,也是每個語言環境的路徑等(我只是想明確地知道問題所在) – TheCodeArtist

+0

恐怕您必須使用ProcessBuilder來運行xdg-user-dir或者自己解析'.config/user-dirs.dirs'。 –

+0

@DenisTulskiy你說得對。我的第一反應是建議從代碼中運行'xdg-user-dir'。然而,我仍然想知道本地化,即**用戶區域設置**「商業」是否適合。因此,等待更多細節...... – TheCodeArtist

回答

1

在Gnome上有java-gnome支持庫,它正在調用與gnome更好地集成的本機調用。它可以通過調用Glib.getUserSpecialDir獲得用戶目錄的路徑。如果你打算在你的程序中使用更多的桌面集成功能,可能還是值得一試的。

0

在爲此尋找答案時,我找到了xdg-java。我還沒有測試過它,但似乎完全符合你(和我)的要求。

它尚未實現所有規範,但它確實實現了我現在需要的規範,我猜測作者會接受補丁。

相關問題