2012-10-26 56 views
8

我正在尋找一種簡單的跨平臺方式,在JVM上獲取用於存儲應用程序設置和緩存數據的適當目錄。例如,在Linux下的XDG規格:簡單的跨平臺獲取Java中的知名桌面路徑?

  • 配置在~/.config/appname
  • 緩存~/.cache/appname

的Windows東西進去C\Users\user\Application Data或一些這樣的(在Win 7);我收集到的Mac將東西放在~/Library/Application Settings之下。

是否有跨平臺調用來獲取這些路徑位置?我一直無法找到一個,但我發現有幾個問題。是否有一些庫爲大多數常用桌面平臺實現了正確的邏輯?

最糟糕的情況是,我只能查找user.home並假裝一切都是基於XDG的Linux環境。但是如果很容易爲用戶的操作系統獲得正確的目錄,我想這樣做。

回答

2

FileSystemView這個類是我所知道的唯一一個包含對像這樣的一些通用目錄的訪問,並且是跨平臺的。請參閱文檔here

該類包含一些可能有用的方法,例如getHomeDirectory()getDefaultDirectory()。這個類被JFileChooser用於Swing接口。我知道它並不直接指向配置和緩存目錄,但它可能是朝着正確方向邁出的一步。

對於我自己的應用程序,我嘗試使應用程序本身包含的所有配置和設置成爲次最佳方法 - 即。在安裝應用程序的目錄下創建一個「config」目錄。儘管它不是整個操作系統配置的中心位置,但至少它保留在Java應用程序上下文中。

2

我們基本上建立了一個實用程序類,它提供了這些信息,主要基於user.homeos.name系統屬性。

我們有一系列的方法,使我們能夠建立一個路徑位置,像...

SystemUtilities.getApplicationSettingsPath("Name of my awesome app");