为什么System.getenv(“HOMEPATH”)在Windows上返回不是绝对路径?
问题描述:
在Linux上System.getenv("HOME")
返回绝对路径/home/user
,但在Windows上返回Users\user
。为什么System.getenv(“HOMEPATH”)在Windows上返回不是绝对路径?
答
您需要使用System.getProperty("user.home")
如果你想要的东西的工作原理相同的多个操作系统。
System.getenv
是操作系统还是上下文相关的 - 不能保证System.getenv("HOME")
在给定的操作系统上返回任何东西,这只是运气,你在Unix上得到的东西与你在Windows上得到的东西类似。
从的Javadoc System.getenv
:
环境变量是一个依赖于系统的外部命名值。
为System.getProperty
,有属性的列表,你可以在一个系统无关的方式获得:
https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#getProperties()
其中之一就是user.home
:“用户的主目录”
答
在Windows上,主驱动器在HOMEDRIVE
变量中单独指定。与HOMEPATH
串联它给你的绝对路径:
String home = System.getenv("HOMEDRIVE")+System.getenv("HOMEPATH");
对于我会返回'\ Users \ myUser',这是主驱动器的绝对路径 – BackSlash