簡體   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