2013-04-26 136 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")一个应用程序来改变,例如获取工作区的目录或路径当前项目

相关问题