Java io tmpdir linux

Блог Сергея Бородавкина

java.io.tmpdir в Windows и Linux

Только что попробовал запустить в Убунту программу, разработанную под Windows. Ну что сказать — был удивлен.

System.getProperty(«java.io.tmpdir») в Windows возвращает что-то наподобие:

А в Linux мне приходит вот что:

Обратите внимание — в первом случае завершающий слеш есть, а во втором — нет, что требует дополнительной проверки в коде.

«Java: написано однажды — тестируем везде» (c)

4 коммент. | добавить комментарий :: java.io.tmpdir в Windows и Linux

Да потому что нехрен генерировать имена файлов руками, конструктор File(String parent, String child) для чего придуман?
А если нужно просто временный файл создать, для этого правильнее использовать File.createTempFile(String prefix, String suffix).

Та шо ж ты аггрессивный такой!

Мне просто нужна строка с этой проперти, причем со слешом в конце. Она потом пойдет в либу заказчика, лежащую в Trunk, где к ней _руками_ допишут имя каталога и будут дрюкать.

В аутсорсинге ведь не все можно править по своему желанию, если ты еще не забыл 😉

В любом случае, приехавшее имя файла проверяют на
File.isDirectory() и File.exists()
B для конструирования имени файла (не через File(String parent, String child)), всегда используют системо-зависимый разделитель имени файлов, File.separator. В случае если он будет присутсвовать дважды, не произойдет ничего страшного

Тут вот что примечательно: в случае Windows (C:\\Temp\\Pse\\) — действительно не произойдет (поскольку первый слеш, фактически, эскейпит второй), а в Linux (//tmp//pse) — как раз произойдет — exists() вернет false.

Источник

Переменная окружения для управления java.io.tmpdir?

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

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

7 ответов

я получаю сообщение об ошибке невозможно определить место установки. Пожалуйста, установите переменную окружения ‘EBSDIR’ в каталог установки. может ли кто-нибудь сказать мне, что такое переменная окружения EBSDIR и для чего она используется? какой путь установки он запрашивает? спасибо

Я пытаюсь настроить путь к экземпляру osgi и папкам конфигурации, чтобы запустить мое приложение Eclipse RCP. Для этого я настраиваю следующее В теге в файле jnlp:

Согласно документам java.io.File Java

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

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

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

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

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

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

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

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

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

Читайте также:  Hevc codec windows 10 что это

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

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

Рекомендуемый способ установить расположение временного каталога-установить системное свойство «java.io.tmpdir», например, указав параметр -Djava.io.tmpdir=/mytempdir в команде java . Свойство также можно изменить из программы, вызвав System.setProperty(«java.io.tmpdir», «/mytempdir) . по модулю проблем безопасности песочницы.

Если вы явно не зададите свойство «java.io.tmpdir» при запуске, JVM инициализирует его значением по умолчанию для конкретной платформы . Для Windows значение по умолчанию получается вызовом метода Win32 API. Для Linux / Solaris значение по умолчанию, по-видимому, жестко задано. Для других JVMs это может быть что-то другое.

Эмпирически переменная среды «TMP» работает на Windows (с текущим JVMs), но не на других платформах. Если вы заботитесь о переносимости, вы должны явно задать системное свойство.

Я пытаюсь настроить переменную окружения через Python : os.environ[myRoot]=/home/myName os.environ[subDir]=$myRoot/subDir Я ожидаю, что переменная окружения subDir будет содержать /home/myname/subDir , однако она содержит строку ‘$myRoot/subDir’ . Как мне получить эту функциональность? (Более.

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

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

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

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

Я пытаюсь изменить каталог java.io.tmpdir с помощью этой команды java -Djava.io.tmpdir=/temporary Но это не удается, и отображается ‘Usage’ команды java. Я делаю это в машине RHEL. Заранее спасибо Я.

Я вижу, что существует переменная окружения SVN_EDITOR для определения того, какой редактор использовать с subversion, а также переменная окружения SVN_MERGE для объединения файлов. Существует ли.

Почему нам нужно создать файл nant.bat в каталоге, включенном в системную переменную окружения PATH? Что на самом деле представляет собой эта переменная окружения Path system? А что, если я этого не.

я получаю сообщение об ошибке невозможно определить место установки. Пожалуйста, установите переменную окружения ‘EBSDIR’ в каталог установки. может ли кто-нибудь сказать мне, что такое переменная.

Я пытаюсь настроить путь к экземпляру osgi и папкам конфигурации, чтобы запустить мое приложение Eclipse RCP. Для этого я настраиваю следующее В теге в файле jnlp:

Источник

hackjutsu / TmpDirExample.java

import java.io.File ;
import java.io.IOException ;
public class TmpDirExample <
public static void main ( String [] args ) <
String tmpdir = System . getProperty( » java.io.tmpdir » );
System . out . println( » The default value of the java.io.tmpdir system property is: \» «
+ tmpdir + » \»\n » );
// Specify some temporary files.
String prefix = » file » ;
String suffix = » .txt » ;
File tempFile = null ;
File tempFile2 = null ;
File tempFile3 = null ;
File directory = new File ( » /home/stathis » );
try <
// Create two temporary files.
tempFile = File . createTempFile(prefix, suffix);
tempFile2 = File . createTempFile(prefix, null );
tempFile3 = File . createTempFile(prefix, suffix, directory);
>
catch ( IOException ex) <
System . err . println( » An IOException was caught: » + ex . getMessage());
ex . printStackTrace();
>
// Printing the name of every file.
System . out . println( » A new file called \» » + tempFile . getName()
+ » \» was created in the directory: \» » + tmpdir + » \» » );
System . out . println( » A new file called \» » + tempFile2 . getName()
+ » \» was created in the directory: \» » + tmpdir + » \»\n » );
System . out . println( » A new file called \» » + tempFile3 . getName()
+ » \» was created in the directory: \» » + directory . getName() + » \»\n » );
// Printing the parent directories of every file.
System . out . println( » The parent directory of the file \» » + tempFile . getName()
+ » \» is: \» » + tempFile . getParent() + » \» » );
System . out . println( » The parent directory of the file \» » + tempFile2 . getName()
+ » \» is: \» » + tempFile2 . getParent() + » \» » );
System . out . println( » The parent directory of the file \» » + tempFile3 . getName()
+ » \» is: \» » + tempFile3 . getParent() + » \»\n » );
// Delete the temporary files.
if (tempFile . delete())
System . out . println( » Successfully deleted the file with name: \» «
+ tempFile . getName() + » \» » );
else
System . out . println( » Couldn’t delete the file with name: \» » + tmpdir + » \» » );
if (tempFile2 . delete())
System . out . println( » Successfully deleted the file with name: \» «
+ tempFile2 . getName() + » \» » );
else
System . out . println( » Couldn’t delete the file with name: \» » + tmpdir + » \» » );
if (tempFile3 . delete())
System . out . println( » Successfully deleted the file with name: \» «
+ tempFile3 . getName() + » \» » );
else
System . out . println( » Couldn’t delete the file with name: \» » + tmpdir + » \» » );
>
>
Читайте также:  Все сборки mac os

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

java.io.tmpdir Example

Posted by: Sotirios-Efstathios Maneas in io September 17th, 2014 0 Views

In this tutorial we will discuss about the java.io.tmpdir system property. The java.io.tmpdir system property indicates the temporary directory used by the Java Virtual Machine (JVM) to create and store temporary files.

The default value is typically «/tmp» , or «/var/tmp» on Unix-like platforms. On Microsoft Windows systems the java.io.tmpdir property is typically «C:\\WINNT\\TEMP» .

During your application’s execution, you can acquire and print the value of the java.io.tmpdir system property, using the following code:

Change the default value of java.io.tmpdir

In case you want to alter the java.io.tmpdir system property, you can make use of the -Djava.io.tmpdir argument and specify your own temporary directory. For example:

In this way, you alter the value of the java.io.tmpdir system property, during the initialization of the Java Virtual Machine (JVM). Otherwise, you can use the following snippet, in order to change the value of the java.io.tmpdir system property:

Create a temporary file

Java provides two static methods in order to create temporary files via the File class:

This method creates a new empty file in the specified directory, using the given prefix and suffix strings to generate its name.

This method creates an empty file in the default temporary-file directory, using the given prefix and suffix to generate its name. Invoking this method is equivalent to invoking the method createTempFile(prefix, suffix, null) .

A sample example that creates a number of temporary files is shown below:

A sample execution is shown below:

Notice that the files created by the createTempFile method have different names during each execution.

Источник

Переменная окружения для управления java.io.tmpdir?

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

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

7 ответов

я получаю сообщение об ошибке невозможно определить место установки. Пожалуйста, установите переменную окружения ‘EBSDIR’ в каталог установки. может ли кто-нибудь сказать мне, что такое переменная окружения EBSDIR и для чего она используется? какой путь установки он запрашивает? спасибо

Я пытаюсь настроить путь к экземпляру osgi и папкам конфигурации, чтобы запустить мое приложение Eclipse RCP. Для этого я настраиваю следующее В теге в файле jnlp:

Читайте также:  Arma 3 steam linux

Согласно документам java.io.File Java

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

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

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

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

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

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

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

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

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

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

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

Рекомендуемый способ установить расположение временного каталога-установить системное свойство «java.io.tmpdir», например, указав параметр -Djava.io.tmpdir=/mytempdir в команде java . Свойство также можно изменить из программы, вызвав System.setProperty(«java.io.tmpdir», «/mytempdir) . по модулю проблем безопасности песочницы.

Если вы явно не зададите свойство «java.io.tmpdir» при запуске, JVM инициализирует его значением по умолчанию для конкретной платформы . Для Windows значение по умолчанию получается вызовом метода Win32 API. Для Linux / Solaris значение по умолчанию, по-видимому, жестко задано. Для других JVMs это может быть что-то другое.

Эмпирически переменная среды «TMP» работает на Windows (с текущим JVMs), но не на других платформах. Если вы заботитесь о переносимости, вы должны явно задать системное свойство.

Я пытаюсь настроить переменную окружения через Python : os.environ[myRoot]=/home/myName os.environ[subDir]=$myRoot/subDir Я ожидаю, что переменная окружения subDir будет содержать /home/myname/subDir , однако она содержит строку ‘$myRoot/subDir’ . Как мне получить эту функциональность? (Более.

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

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

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

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

Я пытаюсь изменить каталог java.io.tmpdir с помощью этой команды java -Djava.io.tmpdir=/temporary Но это не удается, и отображается ‘Usage’ команды java. Я делаю это в машине RHEL. Заранее спасибо Я.

Я вижу, что существует переменная окружения SVN_EDITOR для определения того, какой редактор использовать с subversion, а также переменная окружения SVN_MERGE для объединения файлов. Существует ли.

Почему нам нужно создать файл nant.bat в каталоге, включенном в системную переменную окружения PATH? Что на самом деле представляет собой эта переменная окружения Path system? А что, если я этого не.

я получаю сообщение об ошибке невозможно определить место установки. Пожалуйста, установите переменную окружения ‘EBSDIR’ в каталог установки. может ли кто-нибудь сказать мне, что такое переменная.

Я пытаюсь настроить путь к экземпляру osgi и папкам конфигурации, чтобы запустить мое приложение Eclipse RCP. Для этого я настраиваю следующее В теге в файле jnlp:

Источник

Оцените статью