Когда делает система.метод 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.

468   4  

4 ответов:

в MS Windows временный каталог задается переменной окружения TEMP. В XP временный каталог был установлен для каждого пользователя как локальные настройки\Temp.

Если вы измените переменную среды TEMP на C:\temp, то вы получите то же самое при запуске :

System.out.println(System.getProperty("java.io.tmpdir"));

Если вы устанавливаете

-Djava.io.tmpdir=C:\temp

С одной стороны, когда ты называешь System.getProperty("java.io.tmpdir") инструкция, Java вызывает функцию Win32 API GetTempPath. Согласно в разделе:

функция GetTempPath проверяет наличие среды переменные в следующем порядке и использует первый найденный путь:

  1. путь, указанный переменной среды TMP.
  2. путь, указанный переменной среды TEMP.
  3. путь задается переменной среды USERPROFILE.
  4. каталог Windows.

С другой стороны, пожалуйста, проверьте исторические причины, почему TMP и TEMP сосуществуют. Это действительно стоит прочитать.

стоимостью %TEMP% переменная среды часто зависит от пользователя, и Windows устанавливает ее в отношении текущей учетной записи пользователя. Некоторые учетные записи пользователей могут не иметь профиля пользователя, например, когда ваш процесс выполняется как служба на SYSTEM,LOCALSYSTEM или другой встроенной учетной записи, или вызывается приложением IIS с идентификатором AppPool с создать профиль пользователя отключено. Так что даже когда вы не перезаписываете %TEMP% переменная явно, Windows может использовать c:\temp или даже c:\windows\temp папки для, скажем, необычных учетных записей пользователей. И что более важно, процесс может не иметь прав доступа к этому каталогу!

Comments

    Ничего не найдено.