我已经使用 TMP
环境变量来控制诸如 gcc 写入临时文件的位置之类的事情,但我似乎找不到 java 的 createTempFile API 的等效项。
是否存在这样的环境变量?
原文由 Zach Hirsch 发布,翻译遵循 CC BY-SA 4.0 许可协议
我已经使用 TMP
环境变量来控制诸如 gcc 写入临时文件的位置之类的事情,但我似乎找不到 java 的 createTempFile API 的等效项。
是否存在这样的环境变量?
原文由 Zach Hirsch 发布,翻译遵循 CC BY-SA 4.0 许可协议
默认临时文件目录由系统属性 java.io.tmpdir 指定。在 UNIX 系统上,此属性的默认值通常是“/tmp”或“/var/tmp”;在 Microsoft Windows 系统上,它通常是“c:\temp”。调用 Java 虚拟机时,可能会为该系统属性赋予不同的值,但不保证对该属性的编程更改对该方法使用的临时目录有任何影响。
要指定 java.io.tmpdir
系统属性,您可以按如下方式调用 JVM:
java -Djava.io.tmpdir=/path/to/tmpdir
默认情况下,此值应来自 TMP
Windows 系统上的环境变量
原文由 Bryan Kyle 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
嗯——因为这是由 JVM 处理的,所以我稍微研究了 OpenJDK VM 源代码,认为 OpenJDK 所做的可能模仿了 Java 6 和更早版本所做的。除了在 Windows 上,还有一种方法可以做到这一点,这并不能让人放心。
在 Windows 上,OpenJDK 的
get_temp_directory()
函数对GetTempPath()
进行 Win32 API 调用;这就是在 Windows 上,Java 反映TMP
环境变量的值的方式。在 Linux 和 Solaris 上,相同的
get_temp_directory()
函数返回静态值/tmp/
。我不知道实际的 JDK6 是否遵循这些确切的约定,但从每个列出的平台上的行为来看,它们似乎是这样做的。