2013-04-26 139 views
65

我想使用user.dir dir作爲我的單元測試(創建大量文件)的基本目錄。該屬性指向當前工作目錄(例如,由'cd'命令設置)是否正確?Java「user.dir」屬性 - 它究竟意味着什麼?

+2

正如http://stackoverflow.com/a/陳述840229/3159183,請記住,'-Duser.dir'標誌會影響'File'對象(如果它們沒有被賦予完整路徑),而不是'FileOutPutStream'對象。如果你想確保兩個默認目錄匹配,你應該在啓動Java之前執行cd命令。 – SeldomNeedy 2016-10-12 19:52:05

回答

88

這是從您啓動JVM的位置運行java的目錄。不必位於用戶的主目錄中。它可以在用戶有權運行java的任何地方。

所以,如果你cd/somedir,然後運行程序,user.dir/somedir

不同的屬性,user.home,指的是用戶目錄。如/Users/myuser/home/myuserC:\Users\myuser

請參閱here瞭解系統屬性及其說明的列表。

+0

更正。怎麼樣user.dir? – 2013-04-26 14:41:36

+1

在發佈前已閱讀。但「用戶工作目錄」不是最好的解釋,希望你同意。 – 2013-04-26 14:53:35

5

「用戶工作目錄」通常這是你的應用程序(JAVA)開始(工作目錄)的目錄。 「通常情況」,因爲它可以在運行帶有Runtime.exec(String[] cmdarray, String[] envp, File dir)

+0

只有在maven系統執行junit測試期間才需要一個值。 – 2013-04-26 14:54:34

+0

當你在MAC上改變它時,它會破壞像這樣的測試https://stackoverflow.com/questions/45130661/user-dir-property-broken-on-osx-jdk-1-8-0-111- how-about-other-os-versions :(:( – 2017-07-16 16:10:07

2

System.getProperty("user.dir")一個應用程序來改變,例如獲取工作區的目錄或路徑當前項目

相關問題