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

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

Такая переменная среды существует?

98
задан Paul Sweatte 23 February 2016 в 16:34
поделиться

4 ответа

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

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

В Linux и Solaris то же самое get_temp_directory () функции возвращают статическое значение / tmp / .

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

111
ответ дан 24 November 2019 в 05:08
поделиться

To be clear about what is going on here:

  • The recommended way to set the temporary directory location is to set the System property called "java.io.tmpdir", e.g. by giving the option -Djava.io.tmpdir=/mytempdir to the java command. The property can also be changed from within a program by calling System.setProperty("java.io.tmpdir", "/mytempdir) ... modulo sandbox security issues.

  • If you don't explicitly set the "java.io.tmpdir" property on startup, the JVM initializes it to a platform specific default value. For Windows, the default is obtained by a call to a Win32 API method. For Linux / Solaris the default is apparently hard-wired. For other JVMs it could be something else.

Empirically, the "TMP" environment variable works on Windows (with current JVMs), but not on other platforms. If you care about portability you should explicitly set the system property.

16
ответ дан 24 November 2019 в 05:08
поделиться

Это не переменная среды, но все же дает вам контроль над временным каталогом:

-Djava.io.tmpdir

например:

java -Djava.io.tmpdir=/mytempdir
27
ответ дан 24 November 2019 в 05:08
поделиться

Согласно java.io.File Java Docs

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

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

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

По умолчанию это значение должно приходить из переменной окружения TMP на Windows системах

102
ответ дан 24 November 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: