Почему была изобретена папка%Temp%?
Почему была изобретена папка%Temp%?
Почему любая программа должна иметь временную папку для данных? Могут ли они не просто использовать оперативную память или другое временное хранилище?
3 ответа
Использование "временных" файлов восходит к тем временам, когда компьютеры работали под управлением MS-DOS и имели 640 КБ физической памяти и без подкачки страниц. Воспроизведение тетриса памяти с драйверами устройств и TSR, безнадежно пытаясь освободить часть оперативной памяти, было обычным (хотя и не совсем "любимым") прошлым временем для владельцев ПК.
В наши дни%TEMP% по-прежнему полезен как место для хранения файлов, которые не нужно постоянно сохранять. Например, когда вы загружаете документ с веб-сайта и выбираете "Открыть" вместо "Сохранить", он все равно должен быть сохранен в файл локально перед передачей в программу - это единственный способ передачи, поддерживаемый на 100%. данные в другие программы. (В конце концов, если он был представлен в виде файла на веб-сайте, проще всего снова сохранить его в виде файла.)
Точно так же, если вы открываете файл непосредственно из архива, он сначала распаковывается в%TEMP% - программа архиватора позаботится о распаковке, чтобы другие программы не понадобились. Часто вы можете даже отредактировать файл в программе, и он будет перепакован впоследствии. (Для сравнения, если программа должна была распаковать сам файл, то она должна была бы перепаковывать его каждый раз, когда вы сохраняете, даже если это очень редко необходимо.)
Программисты и опытные пользователи используют места, называемые 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%
здесь, чтобы остаться надолго еще!
С программным обеспечением, которое я написал, я использовал временные папки для обработки файлов CVR самолетов. Размер файлов обычно составляет 512 МБ. Во время обработки файлы проходят через ряд форматов.
- Формат A: Исходные данные о правах собственности.
- Формат B: чересстрочные данные.
- Формат C: четыре файла G711 и файл CVR, содержащий дополнительные данные.
- Формат D: файлы Four Wave и файл CVR.
Я начинаю с копирования оригинального файла в папку Temp, где происходит вся обработка.
Я использую одну библиотеку для преобразования из формата A в формат C (автоматически через формат B). Эта библиотека принимает только имя входного файла. Он выбирает имя выходного файла в той же папке. Это все вне моего контроля.
Я использую вторую библиотеку для преобразования из формата C в формат D.
Последний каталог, в который помещены файлы, виден пользователю, поэтому я не хочу, чтобы они видели файлы, проходящие через их переходы, или чтобы они видели частичные файлы, только конечный вывод. Одна вся обработка завершена, необходимые файлы перемещаются в конечный пункт назначения и Temp
папка удалена
Temp
папка скрывает всю эту обработку от пользователя. Все, что им нужно знать, это процент прогресса.