Введение

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

Реализация

Большинство операционных систем поддерживают ассоциации файлов в той или иной форме. Например, открытие файла из файлового менеджера обычно запускает действие "открыть", чтобы открыть файл в связанном приложении. Действие "открыть" запускает соответствующую программу, которая считывает файл или документ и отображает его пользователю для просмотра, а также, возможно, для редактирования или других операций. Дополнительные действия, такие как печать, обычно доступны через контекстное меню, вызываемое правой кнопкой мыши. Также обычно предусмотрен механизм для изменения ассоциаций. Примером этого является опция "Открыть с помощью" в оболочке Windows.

Microsoft Windows

Серия операционных систем Microsoft Windows, начиная с Windows 3.x, поддерживает ассоциации, основанные на расширениях файлов. Ассоциации хранятся в реестре в виде наборов действий (глаголов) для каждого расширения файла. В более ранних версиях поддерживались ассоциации для открытия файлов, хранящиеся в файле WIN.INI. Ассоциации файлов можно просматривать и редактировать с помощью команды assoc, а с помощью команды ftype можно установить связь между типом файла и приложением, которое будет его открывать. Windows Shell вызывает действия, связанные с ассоциациями файлов, через COM, перетаскивание, вызовы командной строки или через динамический обмен данными (DDE). Расширенные возможности ассоциаций файлов в Microsoft Windows включали ручное определение нового расширения файла с любым количеством связанных действий, указание основного действия по умолчанию, отображение расширений только для определенных типов файлов, настройку значка и описания типа файла, а также настройку связанного MIME-типа и способов его обработки (определение обработки типов файлов для файлов, загруженных или открытых непосредственно из браузера Internet Explorer). Однако возможность настройки расширенной функциональности ассоциаций файлов была удалена в Windows Vista и последующих операционных системах.

Линукс

Основанные на Linux графические интерфейсы, такие как KDE и GNOME, поддерживают ассоциации, основанные на типах MIME. Например, тип MIME text/plain будет связан с текстовым редактором.

Mac OS

Классическая Mac OS использовала коды типа и коды создателя для сопоставления каждого файла с соответствующим приложением, независимо от расширения файла. Более поздние версии macOS также поддерживают сопоставления на основе расширения файла. Пакеты приложений в macOS объявляют поддерживаемые типы файлов в файле Info.plist. Для каждого из этих указанных типов приводится единый идентификатор типа (UTI) вместе со списком "тегов", определяющих, как файл или данные этого типа могут быть идентифицированы. Например, тип JPEG определяется UTI "public.jpeg" и помечается расширениями "jpg" и "jpeg", типом MIME "image/jpeg" и кодом типа "JPEG". Операционная система использует эту информацию для создания списка приложений, способных открывать каждый тип. В Finder (программное обеспечение) каждый файл идентифицируется с помощью UTI и открывается приложением по умолчанию для этого типа. Пользователь также может выбрать из списка других приложений, поддерживающих этот тип. С помощью этой системы типы также сопоставляются с данными, для которых нет имени файла или отсутствует расширение файла. Это включает данные буфера обмена и потоковую передачу данных по протоколу, такому как HTTP, где указан тип MIME.