Формат файла

Поделись знанием:
Перейти к: навигация, поиск

Формат файла, формат данных — спецификация структуры данных, записанных в компьютерном файле. Формат файла часто указывается в его имени, как часть, отделённая точкой; обычно эту часть называют расширением имени файла, хотя, строго говоря, это неверно[прояснить].

Например, окончание имени (расширение) «.txt» обычно используют для обозначения файлов, содержащих только текстовую информацию, а «.doc» — содержащих текстовую информацию, структурированную в соответствии со стандартами программы Microsoft Word. Файлы, содержимое которых соответствует одному формату (реже — одному семейству форматов), иногда называют файлами одного типа.

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

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

Другой пример — структура самих компьютерных программ — исполняемых файлов: она должна строго соответствовать некоторым ожиданиям запускающей её операционной системы.





Спецификации

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

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

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

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

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

Расширение имени файла

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

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

Магические числа

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

Для определения формата файла служит команда file, которая использует файл /usr/share/misc/magic

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
$ file notes.txt
notes.txt: UTF-8 Unicode text
$ file leave_2009-10-12.odt
leave_2009-10-12.odt: OpenDocument Text

Строки с так называемыми "шебангами" в файлах скриптов — особая разновидность "магических чисел". Здесь сигнатура — человеко-читаемый текст, который определяет программу интерпретатор скрипта.

Метаданные

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

MIME

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

См. также

Напишите отзыв о статье "Формат файла"

Ссылки

  • [www.file-extensions.org Энциклопедия форматов файлов]  (англ.)
  • [fileext.ru/ fileext.ru - Описание форматов, типов и расширений файлов. Чем открыть файлы различных форматов.]  (рус.)
  • [www.magicdb.org/ Magic signature database — Standard file format information and FFID registry]  (англ.)
  • [www.freesoftwaremagazine.com/free_issues/issue_01/focus_format_history/ Format wars] File formats for websites and print explained
  • [www.garykessler.net/library/file_sigs.html File signatures] (aka magic numbers) found in files to indicate their file type  (англ.)
  • [dotwhat.net/ dotwhat.net — File extension and format information]  (англ.)
  • [www.nationalarchives.gov.uk/pronom/ PRONOM technical registry]  (англ.)
  • [www.digitalpreservation.gov/formats/index.shtml Library of Congress file format information]  (англ.)

Отрывок, характеризующий Формат файла



Ожидая уведомления о зачислении его в члены комитета, князь Андрей возобновил старые знакомства особенно с теми лицами, которые, он знал, были в силе и могли быть нужны ему. Он испытывал теперь в Петербурге чувство, подобное тому, какое он испытывал накануне сражения, когда его томило беспокойное любопытство и непреодолимо тянуло в высшие сферы, туда, где готовилось будущее, от которого зависели судьбы миллионов. Он чувствовал по озлоблению стариков, по любопытству непосвященных, по сдержанности посвященных, по торопливости, озабоченности всех, по бесчисленному количеству комитетов, комиссий, о существовании которых он вновь узнавал каждый день, что теперь, в 1809 м году, готовилось здесь, в Петербурге, какое то огромное гражданское сражение, которого главнокомандующим было неизвестное ему, таинственное и представлявшееся ему гениальным, лицо – Сперанский. И самое ему смутно известное дело преобразования, и Сперанский – главный деятель, начинали так страстно интересовать его, что дело воинского устава очень скоро стало переходить в сознании его на второстепенное место.
Князь Андрей находился в одном из самых выгодных положений для того, чтобы быть хорошо принятым во все самые разнообразные и высшие круги тогдашнего петербургского общества. Партия преобразователей радушно принимала и заманивала его, во первых потому, что он имел репутацию ума и большой начитанности, во вторых потому, что он своим отпущением крестьян на волю сделал уже себе репутацию либерала. Партия стариков недовольных, прямо как к сыну своего отца, обращалась к нему за сочувствием, осуждая преобразования. Женское общество, свет , радушно принимали его, потому что он был жених, богатый и знатный, и почти новое лицо с ореолом романической истории о его мнимой смерти и трагической кончине жены. Кроме того, общий голос о нем всех, которые знали его прежде, был тот, что он много переменился к лучшему в эти пять лет, смягчился и возмужал, что не было в нем прежнего притворства, гордости и насмешливости, и было то спокойствие, которое приобретается годами. О нем заговорили, им интересовались и все желали его видеть.
На другой день после посещения графа Аракчеева князь Андрей был вечером у графа Кочубея. Он рассказал графу свое свидание с Силой Андреичем (Кочубей так называл Аракчеева с той же неопределенной над чем то насмешкой, которую заметил князь Андрей в приемной военного министра).
– Mon cher, [Дорогой мой,] даже в этом деле вы не минуете Михаил Михайловича. C'est le grand faiseur. [Всё делается им.] Я скажу ему. Он обещался приехать вечером…
– Какое же дело Сперанскому до военных уставов? – спросил князь Андрей.
Кочубей, улыбнувшись, покачал головой, как бы удивляясь наивности Болконского.
– Мы с ним говорили про вас на днях, – продолжал Кочубей, – о ваших вольных хлебопашцах…
– Да, это вы, князь, отпустили своих мужиков? – сказал Екатерининский старик, презрительно обернувшись на Болконского.
– Маленькое именье ничего не приносило дохода, – отвечал Болконский, чтобы напрасно не раздражать старика, стараясь смягчить перед ним свой поступок.
– Vous craignez d'etre en retard, [Боитесь опоздать,] – сказал старик, глядя на Кочубея.
– Я одного не понимаю, – продолжал старик – кто будет землю пахать, коли им волю дать? Легко законы писать, а управлять трудно. Всё равно как теперь, я вас спрашиваю, граф, кто будет начальником палат, когда всем экзамены держать?
– Те, кто выдержат экзамены, я думаю, – отвечал Кочубей, закидывая ногу на ногу и оглядываясь.
– Вот у меня служит Пряничников, славный человек, золото человек, а ему 60 лет, разве он пойдет на экзамены?…
– Да, это затруднительно, понеже образование весьма мало распространено, но… – Граф Кочубей не договорил, он поднялся и, взяв за руку князя Андрея, пошел навстречу входящему высокому, лысому, белокурому человеку, лет сорока, с большим открытым лбом и необычайной, странной белизной продолговатого лица. На вошедшем был синий фрак, крест на шее и звезда на левой стороне груди. Это был Сперанский. Князь Андрей тотчас узнал его и в душе его что то дрогнуло, как это бывает в важные минуты жизни. Было ли это уважение, зависть, ожидание – он не знал. Вся фигура Сперанского имела особенный тип, по которому сейчас можно было узнать его. Ни у кого из того общества, в котором жил князь Андрей, он не видал этого спокойствия и самоуверенности неловких и тупых движений, ни у кого он не видал такого твердого и вместе мягкого взгляда полузакрытых и несколько влажных глаз, не видал такой твердости ничего незначащей улыбки, такого тонкого, ровного, тихого голоса, и, главное, такой нежной белизны лица и особенно рук, несколько широких, но необыкновенно пухлых, нежных и белых. Такую белизну и нежность лица князь Андрей видал только у солдат, долго пробывших в госпитале. Это был Сперанский, государственный секретарь, докладчик государя и спутник его в Эрфурте, где он не раз виделся и говорил с Наполеоном.
Сперанский не перебегал глазами с одного лица на другое, как это невольно делается при входе в большое общество, и не торопился говорить. Он говорил тихо, с уверенностью, что будут слушать его, и смотрел только на то лицо, с которым говорил.
Князь Андрей особенно внимательно следил за каждым словом и движением Сперанского. Как это бывает с людьми, особенно с теми, которые строго судят своих ближних, князь Андрей, встречаясь с новым лицом, особенно с таким, как Сперанский, которого он знал по репутации, всегда ждал найти в нем полное совершенство человеческих достоинств.
Сперанский сказал Кочубею, что жалеет о том, что не мог приехать раньше, потому что его задержали во дворце. Он не сказал, что его задержал государь. И эту аффектацию скромности заметил князь Андрей. Когда Кочубей назвал ему князя Андрея, Сперанский медленно перевел свои глаза на Болконского с той же улыбкой и молча стал смотреть на него.
– Я очень рад с вами познакомиться, я слышал о вас, как и все, – сказал он.
Кочубей сказал несколько слов о приеме, сделанном Болконскому Аракчеевым. Сперанский больше улыбнулся.
– Директором комиссии военных уставов мой хороший приятель – господин Магницкий, – сказал он, договаривая каждый слог и каждое слово, – и ежели вы того пожелаете, я могу свести вас с ним. (Он помолчал на точке.) Я надеюсь, что вы найдете в нем сочувствие и желание содействовать всему разумному.
Около Сперанского тотчас же составился кружок и тот старик, который говорил о своем чиновнике, Пряничникове, тоже с вопросом обратился к Сперанскому.
Князь Андрей, не вступая в разговор, наблюдал все движения Сперанского, этого человека, недавно ничтожного семинариста и теперь в руках своих, – этих белых, пухлых руках, имевшего судьбу России, как думал Болконский. Князя Андрея поразило необычайное, презрительное спокойствие, с которым Сперанский отвечал старику. Он, казалось, с неизмеримой высоты обращал к нему свое снисходительное слово. Когда старик стал говорить слишком громко, Сперанский улыбнулся и сказал, что он не может судить о выгоде или невыгоде того, что угодно было государю.
Поговорив несколько времени в общем кругу, Сперанский встал и, подойдя к князю Андрею, отозвал его с собой на другой конец комнаты. Видно было, что он считал нужным заняться Болконским.
– Я не успел поговорить с вами, князь, среди того одушевленного разговора, в который был вовлечен этим почтенным старцем, – сказал он, кротко презрительно улыбаясь и этой улыбкой как бы признавая, что он вместе с князем Андреем понимает ничтожность тех людей, с которыми он только что говорил. Это обращение польстило князю Андрею. – Я вас знаю давно: во первых, по делу вашему о ваших крестьянах, это наш первый пример, которому так желательно бы было больше последователей; а во вторых, потому что вы один из тех камергеров, которые не сочли себя обиженными новым указом о придворных чинах, вызывающим такие толки и пересуды.