簡體   English   中英

獨立於平台的方式來獲取存儲程序數據的路徑

[英]Platform-independent way to get a path to store program data

是否有一種與平台無關的方法來獲取在Java中存儲程序數據的路徑?

這肯定是一個非常基本的問題,但我似乎在任何地方都找不到答案。 我正在尋找一種存儲用戶數據(例如用戶首選項或歷史數據輸入)的路徑。 在Windows上,我們通常會將其存儲在C:\\Program Files\\APPNAMEC:\\Program Files (x86)\\APPNAMEC:\\ProgramData\\APPNAME具體取決於操作系統和體系結構。 在Unix上,我們可以根據上下文將首選項存儲在/etc/APPNAME/opt/APPNAME中。 在Mac上,我們有一個特殊的機櫃來存儲程序數據。 在Java中,我們如何以獨立於平台的方式獲得這樣的位置?

查找將設置存儲在user.home的(子)目錄中。 它不僅是應用程序要去的地方。 可以合理地預期具有讀寫特權,但是它是跨平台的。

子目錄可能基於類的完全合格名稱或程序包名稱,以防止發生沖突。 IE

package our.com.main;

將被寫入子目錄our/com/main

在大多數桌面系統上,系統屬性user.home應該是非常標准的。

System.out.println(System.getProperty("user.home"));

請注意,這是Java進程運行的用戶-因此,在服務器端Java進程的情況下,您將需要在自己的數據結構中存儲應用程序用戶的信息,因為操作系統不知道應用程序的用戶。

關於系統范圍的存儲位置,您可能需要檢測操作系統版本並計算路徑。 另一個問題是,您極有可能需要升級特權才能寫入系統范圍的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM