Каков лучший эквивалент Windows для / TMP? - PullRequest
14 голосов
/ 25 августа 2009

Я хочу улучшить кроссплатформенное поведение Java-приложения. Однако его набор тестов в настоящее время предполагает наличие каталога /tmp.

Какое лучшее эквивалентное расположение на платформе Windows? Нотабене Я совершенно определенно не хочу предполагать, что у пользователя есть права администратора, но я хочу, чтобы он работал хотя бы на XP, Vista и Windows7.

Существует ли существующая переменная среды , которая могла бы помочь, и / или набор предпочтительных мест, которые я мог бы попробовать в порядке предпочтения?

Ответы [ 5 ]

31 голосов
/ 25 августа 2009

Системное свойство java.io.tmpdir может использоваться для временного каталога пользователя:

File tmp = new File(System.getProperty("java.io.tmpdir"));

Это может быть предпочтительнее, чем File.createTempFile (который в любом случае использует системное свойство tmpdir под капотом) в случае, когда вы хотите искать для временных файлов (например, кэшированные данные из предыдущего вызова вашего приложения, что может быть связано с вашим вопросом).

Вы можете изменить значение системного свойства, предоставив переопределение времени выполнения в командной строке (аргумент JVM): -Djava.io.tmpdir=C:\foo\bar

Примечание: проблема "косая черта", описанная в комментариях к ответу seth ниже , может быть устранена с помощью соответствующего конструктора File :

String fileName = "foobar.txt"
String tmpPath = System.getProperty("java.io.tmpdir");
File tmpFile;
tmpFile = new File(tmpPath + File.separator + fileName); //possible problem
tmpFile = new File(new File(tmpPath), fileName); //OK!

Очевидно, что в windows также есть переменная окружения DOS %TEMP%, которую можно использовать из любых имеющихся у вас сценариев

8 голосов
/ 25 августа 2009

Почему бы не использовать java.io.File.createTempFile()?

2 голосов
/ 25 августа 2009

Windows определяет переменные среды TEMP и TMP, которые предоставляют временную папку текущего пользователя.

0 голосов
/ 25 августа 2009

Если вы хотите настаивать на том, чтобы делать что-то специфичное для Windows, вы можете использовать переменную окружения %temp%.

0 голосов
/ 25 августа 2009

Использование File.createTempFile("myPrefix","mySuffix").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...