java系统在createTempFile时找不到路径
我在调用java函数createTempFile("test", "test")
时遇到一个异常,它说“系统找不到指定的路径”。
尝试过谷歌搜索,但没有成功。
有人知道java从何处获得其默认临时路径以及如何找不到它吗?
Windows变量似乎是正确的,更改它们不会影响java
你可以在下面搜索框中键入要查询的问题!
我在调用java函数createTempFile("test", "test")
时遇到一个异常,它说“系统找不到指定的路径”。
尝试过谷歌搜索,但没有成功。
有人知道java从何处获得其默认临时路径以及如何找不到它吗?
Windows变量似乎是正确的,更改它们不会影响java
# 1 楼答案
试试看:
请参阅:get property method
为了完整起见,这里还添加了Java的file类中的createTempFile(String prefix,String suffix)和createTempFile(String prefix, String suffix, File directory)方法
这是我的代码,可以找到临时文件的路径并找到临时路径:
此代码的输出为:
# 2 楼答案
它是从
java.io.tmpdir
属性读取的本质上是调用
java.nio.file.TempFileHelper.createTempFile(null, prefix, suffix, attrs);
,它再次调用java.nio.file.TempFileHelper.create(dir, prefix, suffix, false, attrs);
。在那里,如果dir
为空,则将其设置为tmpdir
,声明如下:您可以按照@Joni的答案显式设置属性。如果没有显式设置,JVM会在启动时将其初始化为特定于平台的默认值——另请参见Environment variable to control java.io.tmpdir?
如果属性
java.io.tmpdir
指向无效目录,则无法创建临时文件# 3 楼答案
无论默认值是如何获得的,您都可以在启动JVM时通过设置系统属性
java.io.tmpdir
来设置临时文件目录:如果想知道默认值的来源,必须阅读JVM的源代码。例如,Windows上的OpenJDK调用API函数^{} (在JDK源代码中搜索文件
java_props_md.c
),该函数通过以下方式在环境变量和注册表中查找路径: