java中user.dir到底是啥角虫?

String workDirectory = System.getProperty("user.dir");

很多同學(xué)一定寫過或者見過上面的代碼沾谓。那么大家有沒有思考過,"user.dir"到底是什么意思上遥?是系統(tǒng)環(huán)境變量搏屑?還是用戶文件夾?

正所謂“萬事不決問源碼”粉楚,讓我們一起到源代碼里一探究竟:

 public static String getProperty(String key) {
        checkKey(key);
        SecurityManager sm = getSecurityManager();
        if (sm != null) {
            sm.checkPropertyAccess(key);
        }

        return props.getProperty(key);
    }

// 本地方法辣恋,用于初始化props屬性
  private static native Properties initProperties(Properties props);  

從上面源碼中我們可以看出,getProperty方法是從System類的一個靜態(tài)屬性props里面獲取相應(yīng)的值模软,而props屬性是通過本地方法initProperties來賦予初值的伟骨。也就是說,在JVM啟動時通過執(zhí)行本地方法自動初始化了這個系統(tǒng)屬性燃异。好在jdk的文檔注釋上向我們說明了JVM確保有哪些屬性携狭,我們通過下表列出:

屬性名 說明 示例值
java.version Java版本號 11.0.5
java.version.date Java版本日期 2019-10-15
java.vendor Java供應(yīng)商指定字符串 Oracle Corporation
java.vendor.url Java供應(yīng)商URL http://java.oracle.com/
java.vendor.version Java供應(yīng)商版本 18.9
java.home Java安裝根目錄 /usr/lib/jvm/jdk-11.0.5
java.class.version Java 類文件版本號 55.0
java.class.path Java 類路徑 太長,這里省略
os.name 操作系統(tǒng)名 Linux
os.arch 操作系統(tǒng)架構(gòu) amd64
os.version 操作系統(tǒng)版本 5.0.0-37-generic
file.separator 文件分隔符 /
path.separator 路徑分隔符 :
line.separator 換行符 \n
user.name 用戶賬號 lhing17
user.home 用戶根目錄 /home/lhing17
user.dir 用戶當(dāng)前工作目錄 /home/lhing17/IdeaProjects/rocketDownloader

上表中的示例值是在我個人電腦上通過測試類輸出的結(jié)果回俐。我們可以清楚地看到逛腿,"user.dir"是指用戶當(dāng)前工作目錄。如果你是在IDE中運(yùn)行項目仅颇,這個目錄就是你當(dāng)前項目所在的根目錄单默。除了"user.dir"外,這里還提供了其他一些有用的屬性忘瓦,比如"java.home"搁廓、"user.home"等。JVM(指java虛擬機(jī))保證上表中的屬性是有值的耕皮,在項目中我們可以放心通過System.getProperty(propertyName)的方式去獲取境蜕,不必?fù)?dān)心發(fā)生空指針異常。

我們還可以通過System.setProperty(propertyName, propertyValue)的方式去修改這些屬性凌停,或者自定義一些新的屬性粱年。但是,java官方文檔中明確提醒我們罚拟,修改這些系統(tǒng)屬性可能造成不可預(yù)料的副作用台诗,通常情況下我們不應(yīng)該去修改這些屬性。

總結(jié)

System.getProperty方法獲取的屬性是由JVM加載時初始化的屬性舟舒,如"user.dir"代表用戶當(dāng)前的工作目錄拉庶。JVM確保一些指定的屬性值存在嗜憔,我們可以放心調(diào)用秃励。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吉捶,隨后出現(xiàn)的幾起案子夺鲜,更是在濱河造成了極大的恐慌皆尔,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件币励,死亡現(xiàn)場離奇詭異慷蠕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)食呻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門流炕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仅胞,你說我怎么就攤上這事每辟。” “怎么了干旧?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵渠欺,是天一觀的道長。 經(jīng)常有香客問我椎眯,道長挠将,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任编整,我火速辦了婚禮舔稀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闹击。我一直安慰自己镶蹋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布赏半。 她就那樣靜靜地躺著贺归,像睡著了一般。 火紅的嫁衣襯著肌膚如雪断箫。 梳的紋絲不亂的頭發(fā)上拂酣,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音仲义,去河邊找鬼婶熬。 笑死,一個胖子當(dāng)著我的面吹牛埃撵,可吹牛的內(nèi)容都是我干的赵颅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼暂刘,長吁一口氣:“原來是場噩夢啊……” “哼饺谬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起谣拣,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤募寨,失蹤者是張志新(化名)和其女友劉穎族展,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拔鹰,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仪缸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了列肢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恰画。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓷马,靈堂內(nèi)的尸體忽然破棺而出锣尉,到底是詐尸還是另有隱情,我是刑警寧澤决采,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布自沧,位于F島的核電站,受9級特大地震影響树瞭,放射性物質(zhì)發(fā)生泄漏拇厢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一晒喷、第九天 我趴在偏房一處隱蔽的房頂上張望孝偎。 院中可真熱鬧,春花似錦凉敲、人聲如沸衣盾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽势决。三九已至,卻和暖如春蓝撇,著一層夾襖步出監(jiān)牢的瞬間果复,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工渤昌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虽抄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓独柑,卻偏偏與公主長得像迈窟,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子忌栅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容