Переменная среды для управления java.io. tmpdir?


я использовал TMP переменная среды для управления такими вещами, как где gcc пишет это временные файлы, но я не могу найти эквивалент для java createTempFile API.

существует ли такая переменная окружения?

7 90

7 ответов:

Hmmm -- поскольку это обрабатывается JVM, я немного углубился в исходный код OpenJDK VM, думая, что, возможно, то, что сделано OpenJDK, имитирует то, что сделано Java 6 и ранее. Это не обнадеживает, что есть способ сделать это других, чем на Windows.

On Windows, теперь это get_temp_directory() функция делает вызов Win32 API для GetTempPath(); вот как на Windows, Java отражает значение TMP переменные среды.

On Linux и Солярис, одно и то же get_temp_directory() функции возвращают статическое значение /tmp/.

Я не знаю, следует ли фактический JDK6 этим точным соглашениям, но по поведению на каждой из перечисленных платформ кажется, что они это делают.

по словам java.io.File Java Docs

по умолчанию каталог временного файла определяется системное свойство Java.Ио.никакое сжатие. На системах Unix значение по умолчанию этого свойства является обычно "/tmp" или "/var/tmp"; на системах Microsoft Windows это обычно "c:\temp". При вызове виртуальной машины Java этому системному свойству может быть присвоено другое значение, но программные изменения этого свойства не гарантируют никакого эффекта на временном каталоге, используемом этим методом.

указать java.io.tmpdir системное свойство, вы можете вызвать JVM следующим образом:

java -Djava.io.tmpdir=/path/to/tmpdir

по умолчанию это значение должно исходить из TMP переменные среды в Windows

Вы можете установить свой _JAVA_OPTIONS переменные среды. Например, в bash это будет делать трюк:

export _JAVA_OPTIONS=-Djava.io.tmpdir=/new/tmp/dir

Я положил это в свой сценарий входа в систему bash, и это, кажется, делает трюк.

использовать

$ java -XshowSettings
Property settings:
    java.home = /home/nisar/javadev/javasuncom/jdk1.7.0_17/jre
    java.io.tmpdir = /tmp

это не переменная окружения, но все же дает вам контроль над temp dir:

-Djava.io.tmpdir

ex.:

java -Djava.io.tmpdir=/mytempdir

чтобы было понятно, что здесь происходит:

  • рекомендуемый способ установить расположение временного каталога-установить системное свойство с именем "java.io. tmpdir", например, указав опцию -Djava.io.tmpdir=/mytempdir до

используйте команду ниже на терминале UNIX:

java -XshowSettings

при этом будут показаны все Java-свойств и параметров системы. В этом ищите java.io.tmpdir значение.