4

Почему была изобретена папка% Temp%?

Почему любая программа должна иметь временную папку для данных? Могут ли они не просто использовать оперативную память или другое временное хранилище?

3 ответа3

9

Использование "временных" файлов восходит к тем временам, когда компьютеры работали под управлением MS-DOS и имели 640 КБ физической памяти и без подкачки страниц. Воспроизведение тетриса памяти с помощью драйверов устройств и TSR, безнадежно пытаясь освободить часть оперативной памяти, было обычным (хотя и не совсем "любимым") прошлым временем для владельцев ПК.

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

Точно так же, если вы открываете файл непосредственно из архива, он сначала распаковывается в% TEMP% - программа архиватора позаботится о распаковке, чтобы другие программы не понадобились. Часто вы можете даже отредактировать файл в программе, и он будет перепакован впоследствии. (Для сравнения, если программа должна была распаковать сам файл, то она должна была бы перепаковывать его каждый раз, когда вы сохраняете, даже если это очень редко необходимо.)

3

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

%temp% конкретно относится к переменной временной Windows Temp Folder Variable Это переменная для каждого пользователя (в современных системах по умолчанию используется %USERPROFILE%\AppData\Local\Temp). Приложения могут писать в эту папку, когда им требуется временный файл.

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

Довольно часто я пишу пакетные сценарии, для которых требуется временная / промежуточная папка. Они только крошечные, и я обычно всегда использую md temp , использую его, rd temp /s . Если бы я распространял сценарий, и в нем было много файлов, было бы разумно использовать уникальное имя в папке %temp% (было бы немного неудобнее кодировать). Хотя большинство людей не изменяют путь по умолчанию, есть много людей, которые или серверные среды, где вы хотите как можно меньше на основном жестком диске.

Что касается того, почему бы не использовать память, все еще верно сегодня - она не достаточно велика для всего. У моего первого ноутбука было 2 МБ или 4 МБ памяти (я забыл), и хотя многие программы были крошечными, часто было несколько, которые находились в диапазоне 5-10 МБ (MS Office раньше составлял около 20-30 МБ для весь люкс!).

Теперь средний показатель намного выше (машина начального уровня составляет около 2–4 ГБ, а опытные пользователи - 8–16 ГБ, опытные пользователи с небольшим количеством денег - 16 ГБ +), за некоторыми исключениями, такими как сценарии, память может действительно будет использоваться гораздо больше, чем сегодня.

Однако, пока машины начального уровня не будут в диапазоне 16-32 ГБ (дайте ему несколько лет!) Я не думаю, что у нас будет много достижений.

%temp% здесь, чтобы остаться надолго еще!

1

С программным обеспечением, которое я написал, я использовал временные папки для обработки файлов CVR самолетов. Размер файлов обычно составляет 512 МБ. Во время обработки файлы проходят через ряд форматов.

  • Формат A: Исходные данные о правах собственности.
  • Формат B: чересстрочные данные.
  • Формат C: четыре файла G711 и файл CVR, содержащий дополнительные данные.
  • Формат D: файлы Four Wave и файл CVR.

Я начинаю с копирования оригинального файла в папку Temp, где происходит вся обработка.

Я использую одну библиотеку для преобразования из формата A в формат C (автоматически через формат B). Эта библиотека принимает только имя входного файла. Он выбирает имя выходного файла в той же папке. Это все вне моего контроля.

Я использую вторую библиотеку для преобразования из формата C в формат D.

Последний каталог, в который помещены файлы, виден пользователю, поэтому я не хочу, чтобы они видели файлы, проходящие через их переходы, или чтобы они видели частичные файлы, только конечный вывод. Одна вся обработка завершена, необходимые файлы перемещены в конечный пункт назначения, а Temp папка удалена.

Папка Temp скрывает всю эту обработку от пользователя. Все, что им нужно знать, это процент прогресса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .