Просто любопытно, когда System.getProperty("java.io.tmpdir")
вернется "c:\temp"
. Согласно java.io.File Java Docs -
Каталог временных файлов по умолчанию определяется системным свойством java.io.tmpdir. В системах UNIX значение этого свойства по умолчанию обычно равно «/ tmp» или «/ var / tmp»; в системах Microsoft Windows это обычно «c: \ temp». При вызове виртуальной машины Java этому системному свойству может быть присвоено другое значение, но не гарантируется, что программные изменения этого свойства окажут какое-либо влияние на временный каталог, используемый этим методом.
Но в моем случае-
System.out.println(System.getProperty("java.io.tmpdir"));
Всегда возвращается
C:\Users\admin\AppData\Local\Temp\ i.e. %TEMP%
В каких условиях он вернется "c:\temp"
?
EDITED: если я изменю% TEMP% на C: \ Temp, я получу C: \ Temp, верно? Но в документации указано c: \ Temp вместо C: \ Temp.
C:\Temp
, изменив% TEMP%, установив Windows 98 или передав егоjava -Djava.io.tmpdir=C:\Temp
. Также проверьте это: stackoverflow.com/questions/3437095/…C:\Temp
то получуC:\Temp
. Правильно? но док-шоуc:\Temp
вместоC:\Temp
. :)"C:\\WINNT\\TEMP"
.Ответы:
В MS Windows временный каталог задается переменной окружения
TEMP
. В XP временный каталог был установлен для каждого пользователя как Local Settings \ Temp.Если вы измените переменную среды TEMP на
C:\temp
, то вы получите то же самое при запуске:System.out.println(System.getProperty("java.io.tmpdir"));
источник
TMP
env var, тоTEMP
будет проигнорировано. Пожалуйста, обратитесь к моему ответу и дайте мне знать, если вы не поняли, что я имею в виду.Если вы установите
источник
С одной стороны, когда вы вызываете
System.getProperty("java.io.tmpdir")
инструкцию, Java вызывает функцию Win32 APIGetTempPath
. Согласно MSDN :С другой стороны, пожалуйста, проверьте исторические причины того, почему
TMP
иTEMP
сосуществуют . Это действительно стоит прочитать.источник
Значение
%TEMP%
переменной среды часто зависит от пользователя, и Windows настраивает его с учетом текущей учетной записи пользователя. Некоторые учетные записи пользователей могут не иметь профиль пользователя, например , когда ваш процесс запускается как служба наSYSTEM
,LOCALSYSTEM
или другой встроенной учетной записи, или вызывается приложением IIS с AppPool тождественности Создание профиля пользователя опция выключена. Таким образом, даже если вы не перезаписываете%TEMP%
переменную явно, Windows может использоватьc:\temp
или дажеc:\windows\temp
папки, скажем, для необычных учетных записей пользователей. И что более важно, процесс может не иметь прав доступа к этому каталогу!источник