Share to: share facebook share twitter share wa share telegram print page

Ассоциация файлов

Ассоциация, ассоциирование или сопоставление файлов — в программном обеспечении привязывание файла (по расширению или по каким-либо другим признакам) к прикладной программе, которая обрабатывает эти файлы. При «вызове» этого файла, например, в файловом менеджере, вызовется связанная с ним программа и откроет файл. Обычно эти ассоциации возникают при установке программ установщиком.

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

Способы ассоциации

Через комментарий #!

Уже в 1970-е годы разработчики Unix осознали: набрать script.pl проще, чем perl script.pl. Решение было простейшим: в первой строке скрипта пишется

#!/usr/bin/perl

У этой системы два недостатка: работает только для скриптов (текстовых файлов на правах исполняемых), и требует абсолютный путь к файлу. Второе иногда решают строкой:

#!/usr/bin/env perl

Через поля файловой системы

Связывание файлов с программами на уровне системы было впервые представлено в компьютерах Macintosh в начале 1980-х. Для этого применялись так называемые «коды формата» (особое поле файловой системы Macintosh).

Mac OS X, в дополнение к кодам формата, позволила ассоциировать файлы и по расширениям.

По расширению

В DOS, с его расширениями файлов, Norton Commander предложил файл NC.EXT. В дальнейшем появились сходного формата файлы NCVIEW.EXT и NCEDIT.EXT, отвечавшие за запуск программ просмотра и редакторов соответственно. Похожие вещи были реализованы и в DOS Navigator.

Microsoft Windows предложила «системные» ассоциации файлов и концепцию «глаголов»: что именно надо сделать с файлом, задавалось английской строкой. Наиболее распространённые глаголы Windows — «open» (открыть), «edit» (редактировать), «print» (распечатать), «explore» (просмотреть содержимое). Любая программа могла функцией ShellExecute запустить любой файл (не только программный) — при этом вызывается та программа, которая с этим файлом ассоциирована. Например, если «запустить» HTML-файл, открывается тот браузер, который установлен пользователем, будь это Internet Explorer, Mozilla Firefox, Opera или Google Chrome[1]. Различные схемы URL (http://, ftp:// и т. д.) также могли ассоциироваться со своими программами. Для вызова файла может применяться не только командная строка, но и DDE. Второй, несмотря на то, что это явно устаревшая технология, в ряде случаев предпочтительнее: например, если надо распечатать пять файлов через командную строку, одновременно запускаются пять копий программы, соревнующихся за один принтер. Поэтому отпечатки выходят из принтера в неопределённом порядке; в DDE такой проблемы нет.

Диспетчер файлов отличал ассоциированные файлы (иконка исписанного листа) от неассоциированных (иконка чистого листа); Проводник Windows даёт файлу иконку той программы, которая его открывает. Автозапуск Windows XP позволил запускать разные программы в зависимости от того, что обнаружено на диске: картинки, музыка, видео.

Linux ввёл ассоциации файлов относительно поздно, когда появились графические оболочки. Ассоциирование реализовано через промежуточный слой — MIME-тип: расширение привязывается к типу, а тип — к программе. Похожая настройка реализована в большинстве браузеров: в интернете форматы файлов обычно задаются MIME-типом, а на локальных дисках — расширением.

По MIME-типу

Родом с браузеров. Во многих протоколах Интернета вместе с телом файла ходит строка — MIME-тип, например text/html для HTML или image/jpeg для JPEG.

На случай, если эту строку сервер почему-то не выдал, существует двухуровневое ассоциирование: file.pdf → application/pdf → программа-просмотрщик.

Программы

Существует ряд специальных программ для изменения ассоциаций типов фалов с программами. Например в Windows встроена программа «сопоставление типов файлов или протоколов», доступная из панели управления. Также существуют различные сторонние программы.

Примечания

  1. Разумеется, возможность вызвать конкретную программу осталась, через функцию CreateProcess.
Kembali kehalaman sebelumnya