Java System Property'java.io.tmpdir'的不同行为

时间:2015-04-16 07:36:58

标签: java operating-system

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

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

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

该方法具有与上述方法相同的行为。 有没有人有任何想法:)?

1 个答案:

答案 0 :(得分:0)

  

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

From the JavaDocs

因此,Tomcat必须设置java.io.tmpdir系统属性。如果你真的需要使用不同的值,你必须在那里提供它。

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