System.getProperty("java.io.tmpdir")何时返回"c:\ temp"

Ash*_*oli 104 java windows tempdir

只是好奇什么时候System.getProperty("java.io.tmpdir")回来"c:\temp".根据java.io.File Java Docs -

缺省临时文件目录由系统属性java.io.tmpdir指定.在UNIX系统上,此属性的默认值通常为"/ tmp"或"/ var/tmp"; 在Microsoft Windows系统上,它通常是"c:\ temp".调用Java虚拟机时,可以为此系统属性提供不同的值,但不保证对此属性的编程更改会对此方法使用的临时目录产生任何影响.

但就我而言 -

System.out.println(System.getProperty("java.io.tmpdir"));
Run Code Online (Sandbox Code Playgroud)

永远返回 -

C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%
Run Code Online (Sandbox Code Playgroud)

它会在什么条件下返回"c:\temp"

编辑:如果我将%TEMP%更改为C:\ Temp然后我会得到C:\ Temp,对吧?但文档显示c:\ Temp而不是C:\ Temp.

Mad*_*shi 122

在MS Windows中,临时目录由环境变量设置TEMP.在XP中,临时目录按用户设置为Local Settings\Temp.

如果将TEMP环境变量更改为C:\temp,则在运行时获得相同的结果:

System.out.println(System.getProperty("java.io.tmpdir"));

  • 在Windows上有一个名为%TMP%的第二个环境变量,有时会使用它,而不是%TEMP%,例如Eclipse的GWT插件使用%TMP%变量. (2认同)

Pet*_*rey 32

如果你设置

-Djava.io.tmpdir=C:\temp
Run Code Online (Sandbox Code Playgroud)

  • Windows文件名不区分大小写. (17认同)

Zak*_*ria 31

一方面,当您调用System.getProperty("java.io.tmpdir")指令时,Java会调用Win32 API的函数GetTempPath.根据MSDN:

GetTempPath函数按以下顺序检查环境变量是否存在,并使用找到的第一个路径:

  1. TMP环境变量指定的路径.
  2. TEMP环境变量指定的路径.
  3. USERPROFILE环境变量指定的路径.
  4. Windows目录.

另一方面,请查看原因TMPTEMP共存的历史原因.这真的值得一读.