当我尝试获取String tempdir = System.getProperty(“ java.io.tmpdir”);时,
它将返回我的操作系统“ temp”目录路径。例如C:\ Users \ DATAGU〜1 \ AppData \ Local \ Temp \在普通的Java应用程序中。那就对了。

但是当我尝试在部署在tomcat6上的Web应用程序上获得相同的属性时
它向我返回了tomcat临时目录路径(例如D:\ tomcat6 \ temp)。有人知道为什么会这样吗?
也有任何方法可以从我的Web应用程序获取默认的OS临时目录路径,因为我需要在temp目录中存储一些文件,该文件应该仅是OS temp目录。

我也尝试过:
文件temp = File.createTempFile(“ temp-file”,“ tmp”); System.out.println(“临时文件:” + temp.getAbsolutePath());

此方法具有与上述方法相同的行为。
有人知道吗:)?

最佳答案

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


From the JavaDocs

因此,Tomcat必须设置java.io.tmpdir系统属性。如果您确实需要使用其他值,则必须在此处提供。

或者只是使用File.createTempFile(String, String, File)函数(我在上面的源中将asaa链接到该函数)来提供目录。这可能会更加理想,因为您不必与Tomcat争夺谁来设置系统属性。

关于java - Java系统属性“java.io.tmpdir”的不同行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29668260/

10-15 06:42