为什么System.getenv(“HOMEPATH”)在Windows上返回不是绝对路径?

问题描述:

在Linux上System.getenv("HOME")返回绝对路径/home/user,但在Windows上返回Users\user为什么System.getenv(“HOMEPATH”)在Windows上返回不是绝对路径?

+0

对于我会返回'\ Users \ myUser',这是主驱动器的绝对路径 – BackSlash

您需要使用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");