控制 java.io.tmpdir 的环境变量?

我已经使用环境变量来控制诸如gcc写入临时文件的位置之类的东西,但我似乎找不到java的createTempFile API的等效项。TMP

是否存在这样的环境变量?


答案 1

根据java.io.File Java Docs

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

要指定 System 属性,可以按如下方式调用 JVM:java.io.tmpdir

java -Djava.io.tmpdir=/path/to/tmpdir

默认情况下,此值应来自 Windows 系统上的 TMP 环境变量


答案 2

嗯 -- 由于这是由 JVM 处理的,所以我稍微深入研究了 OpenJDK VM 源代码,认为 OpenJDK 所做的可能模仿了 Java 6 及更早版本所做的工作。除了Windows之外,还有一种方法可以做到这一点,这并不令人放心。

Windows上,OpenJDK的函数对Win32 API进行调用;这就是在Windows上,Java如何反映环境变量的值。get_temp_directory()GetTempPath()TMP

LinuxSolaris 上,相同的函数返回静态值 。get_temp_directory()/tmp/

我不知道实际的JDK6是否遵循这些确切的约定,但是通过每个列出的平台上的行为,似乎确实如此。


推荐