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

新手上路,请多包涵

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

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

原文由 Zach Hirsch 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

嗯——因为这是由 JVM 处理的,所以我稍微研究了 OpenJDK VM 源代码,认为 OpenJDK 所做的可能模仿了 Java 6 和更早版本所做的。除了在 Windows 上,还有一种方法可以做到这一点,这并不能让人放心。

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

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

我不知道实际的 JDK6 是否遵循这些确切的约定,但从每个列出的平台上的行为来看,它们似乎是这样做的。

原文由 delfuego 发布,翻译遵循 CC BY-SA 3.0 许可协议

根据 java.io.File Java 文档

默认临时文件目录由系统属性 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题