繁体   English   中英

Java系统属性“ java.io.tmpdir”的不同行为

[英]Different behavior of Java System Property 'java.io.tmpdir'

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

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

我也尝试过:File 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虚拟机时,可以为此系统属性赋予不同的值,但是不能保证对此属性的编程更改对此方法使用的临时目录没有任何影响。

从JavaDocs

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM