2013-04-12 80 views
0

我正在製作一個Java遊戲,它將選項和LWJGL jars存儲在標準應用程序數據存儲目錄中(我認爲這就是Windows上的C:\ Users \ user \ AppData \ roaming \ application,〜/。在Linux上的應用程序,以及Mac上的〜/ Library/Preferences)。目前我只是使用System.getProperty(os.name),並有一個if-else來選擇正確的文件路徑(它使用system.getProperty(user.home)並向其添加正確的文件路徑)。但是,這可能不適用於某些奇怪的操作系統,因爲if-else在操作系統名稱中找不到Windows,Mac或Linux,這似乎也是一種非常糟糕的方式來執行此操作(也是if-否則假定操作系統是Linux,如果它不是Windows或Mac)。我嘗試了反編譯Minecraft,它將應用程序數據和LWJGL jar存儲在正確的路徑中,但代碼被混淆了。有沒有更好的方式來做到這一點,或者我應該堅持使用os.name上的if-else?平臺獨立文件存儲Java

+0

真的有必要將這些文件存儲在特定位置嗎? – Smit

+1

另請參閱:1)['Preferences'](http://docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html)*「該類允許應用程序存儲和檢索用戶和系統首選項以及配置數據,這些數據被持久地存儲在一個依賴於實現的後臺存儲中。「* 2)用於JWS的['PersistenceService'](http://pscode.org/jws/api.html#bs)應用。 3)小程序的Cookies。 –

回答

1

對於配置首選項,有Java首選項API。

對於其他文件,我還沒有找到解決方案。目前最好的解決方案可能是根據user.home屬性在OS類型上進行回退。

在Linux/Unix(不是Mac)上,您可能要兌現XDG Base Directory specification

0

如若不是這樣的工作無處不在,即路徑沒有的if-else-IF:

String userHome = System.getProperty("user.home"); 
if (!userHome.endsWith("/")) { 
    userHome += "/"; 
} 

String targetPath = userHome + ".myapp/settings.properties"; 
+0

這應該無處不在,但它不適合用於存儲首選項的標準位置(例如Windows上的user.home/AppData/roaming/appName /)。 –