Я использовал TMP
переменная среды для управления вещами как то, где gcc пишет, что это - временные файлы, но я, может казаться, не нахожу эквивалент для createTempFile API Java.
Такая переменная среды существует?
Хммм - поскольку это обрабатывается JVM, я немного углубился в исходный код виртуальной машины OpenJDK, думая, что, возможно, то, что сделано OpenJDK, имитирует то, что сделано в Java 6 и ранее. Неутешительно, что есть другой способ сделать это, кроме Windows.
В Windows функция OpenJDK get_temp_directory ()
выполняет вызов Win32 API для GetTempPath ()
; именно так в Windows Java отражает значение переменной среды TMP
.
В Linux и Solaris то же самое get_temp_directory ()
функции возвращают статическое значение / tmp /
.
Я не знаю, следует ли фактический JDK6 этим точным соглашениям, но по поведению на каждой из перечисленных платформ,
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.
Это не переменная среды, но все же дает вам контроль над временным каталогом:
-Djava.io.tmpdir
например:
java -Djava.io.tmpdir=/mytempdir
Согласно 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 системах