Когда делает система.метод getproperty("Java для.Ио.никакое сжатие") возвращение "c:temp"
просто любопытно, когда System.getProperty("java.io.tmpdir") возвращает "c:temp". Согласно java. io. File Java Docs -
по умолчанию каталог временного файла определяется системное свойство Java.Ио.никакое сжатие. На системах Unix значение по умолчанию этого свойства является обычно "/tmp" или "/var/tmp"; на системах Microsoft Windows это обычно "c:temp". При вызове виртуальной машины Java этому системному свойству может быть присвоено другое значение, но программные изменения этого свойства не гарантируют никакого влияния на временный каталог, используемый этим методом.
но в моем случае-
System.out.println(System.getProperty("java.io.tmpdir"));
всегда возвращает-
C:UsersadminAppDataLocalTemp i.e. %TEMP%
в каких условиях он вернется "c:temp"?
отредактировано: если я изменю %TEMP% на C:Temp тогда я получу C:Temp да? Но документация показывает c:Temp вместо того, чтобы C:Temp.
4 ответов:
в MS Windows временный каталог задается переменной окружения
TEMP. В XP временный каталог был установлен для каждого пользователя как локальные настройки\Temp.Если вы измените переменную среды TEMP на
C:\temp, то вы получите то же самое при запуске :
System.out.println(System.getProperty("java.io.tmpdir"));
С одной стороны, когда ты называешь
System.getProperty("java.io.tmpdir")инструкция, Java вызывает функцию Win32 APIGetTempPath. Согласно в разделе:функция GetTempPath проверяет наличие среды переменные в следующем порядке и использует первый найденный путь:
- путь, указанный переменной среды TMP.
- путь, указанный переменной среды TEMP.
- путь задается переменной среды USERPROFILE.
- каталог Windows.
С другой стороны, пожалуйста, проверьте исторические причины, почему
TMPиTEMPсосуществуют. Это действительно стоит прочитать.
стоимостью
%TEMP%переменная среды часто зависит от пользователя, и Windows устанавливает ее в отношении текущей учетной записи пользователя. Некоторые учетные записи пользователей могут не иметь профиля пользователя, например, когда ваш процесс выполняется как служба наSYSTEM,LOCALSYSTEMили другой встроенной учетной записи, или вызывается приложением IIS с идентификатором AppPool с создать профиль пользователя отключено. Так что даже когда вы не перезаписываете%TEMP%переменная явно, Windows может использоватьc:\tempили дажеc:\windows\tempпапки для, скажем, необычных учетных записей пользователей. И что более важно, процесс может не иметь прав доступа к этому каталогу!
Comments