Каталог временного файла Windows детализирует (Java)

Я пишу программу, для которой нужна универсальная временная папка. Я пытаюсь найти детали о папках Windows Temp. Существует два пути, которые я знаю о -

  1. В каждом пользовательском каталоге под AppData\Local\Temp\Это может измениться зависящий версия Windows?

  2. В системной папке под Temp\(C:\Windows\Temp)

Я задаюсь вопросом точно, что Windows делает к каждому из них. Если Windows удаляет файлы из любого местоположения, когда это делает так? Как могут/должны, я использую эти каталоги для своего программирования?

Править: У меня есть большая проблема на самом деле - из-за определенного механизма, который я выполняю косвенно с моей программой, которая использует файлы, которые я создаю во временном каталоге, мне нужен временный каталог, который не использует пробельные символы в пути. System.getProperty("java.io.tmpdir") Java в Windows дает мне временный файл, это находится в пользовательском каталоге, который на XP находится под "Documents and Settings..." Не хороший. Какие-либо предложения? Поэтому я задаюсь вопросом о каталоге C:\Windows\Temp\...

9
задан Tony R 9 August 2010 в 03:41
поделиться

4 ответа

Не совсем. Есть пользовательская и системная папка, расположение которой по умолчанию зависит от версии Windows, имени системной папки и, действительно, в более старых версиях Windows было одинаковым как для пользователя, так и для системного случая. Однако эти значения по умолчанию можно изменить (они находятся в системе, которую я использую сейчас, но не на том же диске, что и системная папка).

Ячейки хранятся в системных переменных. Некоторые фреймворки (.NET, VB6 и, без сомнения, другие) предоставляют удобные способы поиска путей вместо поиска системной переменной (например, System.IO.Path.GetTempPath в .NET).

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

В .NET System.IO.Path.GetTempFileName () создаст новый файл во временной области и вернет вам его имя, которое с разумной гарантией не будет конфликтовать с другими, поэтому используйте этот или аналогичные методы, если ты сможешь.

3
ответ дан 4 December 2019 в 14:26
поделиться

Похоже, у вас есть две программы, которым нужно совместно использовать временные файлы, и одна определенно не хочет пробелов в имени пути. Наверное, проще всего:

  1. установить переменные TMP и TEMP в общий каталог
  2. запустить каждое приложение (из этой измененной среды) - которое должно выбрать временную переменную

Итак, в командной строке вы может сделать это:

  1. установить TMP = c: \ mytemp
  2. установить TEMP = c: \ mytemp
  3. java -cp x; y; z my.application.Entry
  4. запустить другое приложение (надеюсь, оно также читает среду для temp / tmp)

Надеюсь, что это поможет.

1
ответ дан 4 December 2019 в 14:26
поделиться

Чтобы ответить на часть вашего вопроса - если вы используете .NET, вы можете использовать метод Path.GetTempPath () из System.IO , чтобы получить расположение временного каталога.

// Get the path of the temporary directory
string tempDir = Path.GetTempPath();

// "Creates a uniquely named, zero-byte temporary file on disk and returns the full path of that file."
string tempFile = Path.GetTempFileName();
0
ответ дан 4 December 2019 в 14:26
поделиться

Переменная среды % TEMP% , определенная на моем ПК (XP SP3), использует имена каталогов в стиле DOS abcdef ~ 1 - следовательно, если вы можете извлечь эту переменную, у вас должен получиться путь без пробелов.

например. Пуск> Выполнить>% TEMP% переводит меня в C: \ DOCUME ~ 1 \ \ LOCALS ~ 1 \ Temp

Однако, если «суперпользователь» возится с эта переменная и указывает ее где-то еще, возможно, что-то упадет. Вы можете посмотреть что-нибудь вроде этого , чтобы получить путь из 8 символов и без пробелов.

0
ответ дан 4 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

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