Формат файла

Термин формат файла (или тип файла) используется для описания структуры данных, записанных в компьютерном файле.

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

Различные форматы файлов могут различаться степенью детализации, один формат может быть «надстройкой» над другим или использовать элементы других форматов. Например, текстовый формат накладывает только самые общие ограничения на структуру данных. Формат HTML устанавливает дополнительные правила на внутреннее устройство файла, но при этом любой HTML-файл является в то же время текстовым файлом.[1]

СпецификацииПравить

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

Иногда компании могут считать определённые форматы файлов своим коммерческим секретом и не публиковать их. Хорошо известный пример — форматы файлов пакета Microsoft Office. В некоторых случаях компания, выпустившая приложение, просто не считает нужным тратить время на написание подробной спецификации.

Если спецификация формата недоступна, то для обеспечения совместимости программы с данным форматом приходится заниматься обратной разработкой. В большинстве или во всех странах форматы файлов не защищены законами об авторских правах. Однако, в некоторых странах, патентами могут быть защищены алгоритмы, используемые для кодирования данных в какой-либо формат. Например, в широко распространённом формате GIF используется патентованный алгоритм, что привело к разработке альтернативного формата PNG.

Определение типа файлаПравить

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

Расширение имени файлаПравить

Некоторые операционные системы, например, CP/M, DOS, и Microsoft Windows используют для определения типа файла часть его имени, т. н. «расширение имени файла». В старых операционных системах это были три символа, отделённые от имени файла точкой (в файловых системах семейства FAT имя и расширение хранились отдельно, точка добавлялась уже на уровне ОС); в более новых системах расширение может являться просто частью имени, и тогда его длина ограничена только неиспользованной длиной имени (которая может составлять, например, 255 символов). Например, HTML-файлам может соответствовать расширение «.htm» или «.html».

Пользователь может свободно изменить расширение файла. Поскольку многие оболочки пользователя используют расширение, чтобы определить программу, с помощью которой нужно открыть файл, это может сделать последний недоступным для работы или вообще «потерять», если пользователь забудет исходное расширение. Поэтому Windows Explorer в новых версиях[уточнить] Microsoft Windows и Windows NT по умолчанию скрывает расширения. Эта практика имеет и обратную сторону: так как расширение файла не видно, можно обмануть пользователя, заставив его думать, что, например, файл с расширением .exe — изображение с другим расширением. В то же время, опытный пользователь может использовать возможность изменить назначенный файлу тип, просто сменив расширение, чтобы открыть его в другой программе, не указывая её напрямую. Это может быть полезно, если в программе не предусмотрено открытие файлов с каким‑то расширением, а пользователь знает, что их формат подходит для обработки в данной программе.

Магические числаПравить

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

МетаданныеПравить

Некоторые файловые системы позволяют сохранять дополнительные атрибуты для каждого файла, т. н. «метаданные». Эти метаданные можно использовать для хранения информации о типе файла. Такой подход используется в компьютерах Apple Macintosh. Метаданные поддерживаются такими современными файловыми системами как HPFS, NTFS, ext2, ext3 и другими. Недостатком этого метода является плохая переносимость — при копировании файлов между файловыми системами разных типов метаданные могут быть потеряны.

MIMEПравить

Типы данных, определённые стандартом MIME широко используются в различных сетевых протоколах, однако в файловых системах они пока применяются редко.

См. такжеПравить

СсылкиПравить