Формат файла, формат данных — спецификация структуры данных, записанных в компьютерном файле. Идентификатор формата файла, как правило, указывается в конце имени файла в виде «расширения». Расширение имени файла помогает идентифицировать формат данных, содержащихся в файле, программам, которые могут с ним работать. Иногда формат данных дополнительно указывается в начале содержимого файла.
В операционной системе для определения программы, которая может открыть какой-либо файл, применяется сопоставление (ассоциирование) файлов и программ.
Так как общепринятая в вычислительной технике концепция файла — неструктурированная последовательность байтов, компьютерные программы, сохраняющие структурированные данные в файлы, должны как-то преобразовывать их в последовательность байтов и наоборот (в ООП эти операции называются, соответственно, «сериализацией» и «десериализацией»; для текстовой информации последнее также называется «разбор» или «парсинг»). Алгоритм этих преобразований, а также соглашения о том, как различные фрагменты структурированных данных располагаются внутри файла, и составляют его «формат».
ЧТО ВНУТРИ ФАЙЛОВ? | РАЗБОР
Различные форматы файлов могут различаться степенью детализации, один формат может быть «надстройкой» над другим или использовать элементы других форматов. Например, текстовый формат накладывает только самые общие ограничения на структуру данных. Формат HTML устанавливает дополнительные правила на внутреннее устройство файла, но при этом любой HTML-файл является в то же время текстовым файлом.
Другой пример — структура компьютерных программ — исполняемых файлов: она должна строго соответствовать некоторым ожиданиям (спецификации) запускающей её операционной системы.
- 1 Спецификации
- 2 Определение типа файла
- 2.1 Расширение имени файла
- 2.2 Магические числа
- 2.3 Метаданные
- 2.4 MIME
Спецификации
Для многих форматов файлов существуют опубликованные спецификации, в которых подробно описана структура файлов данного формата, то, как программы должны кодировать данные для записи в этот формат и как декодировать их при чтении. Большинство таких спецификаций свободно доступны, некоторые распространяются за плату.
Иногда компании могут считать определённые форматы файлов своей коммерческой тайной и не публиковать их. Хорошо известный пример — форматы файлов пакета Microsoft Office. Однако, с переходом на открытый формат Office Open XML, компания Microsoft, все же опубликовала спецификации форматов под OSP [en] [1] [2] [3] . В некоторых случаях компания, выпустившая приложение, просто не считает нужным тратить время на написание подробной спецификации.
Если спецификация формата недоступна, то для обеспечения совместимости программы с данным форматом приходится заниматься обратной разработкой. В большинстве или во всех странах форматы файлов не защищены законами об авторских правах. Однако в некоторых странах патентами могут быть защищены алгоритмы, используемые для кодирования данных в какой-либо формат. Например, в широко распространённом формате GIF использовался патентованный алгоритм (срок действия патентов в разных странах истек в 2003—2004 гг.), что привело к разработке альтернативного формата PNG.
Случайно сделал , что файл CS открывается как блокнот или другая прога. РЕШЕНИЕ
Определение типа файла
Тип файла — это информация для быстрой идентификации содержимого файла операционной системой и пользователем без необходимости считывания всего содержимого файла. Благодаря этой информации пользователь приблизительно знает тип содержащейся информации в файле, а в операционной системе может быть сопоставлена программа для обработки файлов данного типа. Для того, чтобы правильно работать с файлами, программы должны иметь возможность определять их тип. По историческим причинам, в разных операционных системах используются разные подходы для решения этой задачи.
Расширение имени файла
Некоторые операционные системы, например, CP/M, RT-11, 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, широко используются в различных сетевых протоколах, однако в файловых системах они пока применяются редко.
См. также
- Расширение имени файла
- Список форматов файлов
- Типы файлов (UNIX)
Примечания
- ↑Tamura Jones.Microsoft releases Office Binary Formats(неопр.) . www.tamurajones.net. Дата обращения: 11 января 2018.Архивировано 12 ноября 2017 года.
- ↑Open Specification Promise(англ.). msdn.microsoft.com. Дата обращения: 11 января 2018.Архивировано 7 декабря 2017 года.
- ↑Understanding Office Binary File Formats(англ.). msdn.microsoft.com. Дата обращения: 11 января 2018.Архивировано 11 июля 2017 года.
Ссылки
- Энциклопедия форматов файлов(англ.)
- fileext.ru — Описание форматов, типов и расширений файлов. Чем открыть файлы различных форматов.(рус.)
- fileformats.ru — База расширений файлов и типов файлов.(рус.)
- Magic signature database — Standard file format information and FFID registry(англ.)
- Format wars File formats for websites and print explained (англ.)
- File signatures (aka magic numbers) found in files to indicate their file type (англ.)
- dotwhat.net — File extension and format information(англ.)
- PRONOM technical registry(англ.)
- Library of Congress file format information(англ.)
- Руниверсалис:Cite web (не указан язык)
- Руниверсалис:Статьи, подозреваемые в наличии оригинальных исследований с мая 2022 года
- Руниверсалис:Статьи с шаблонами недостатков по алфавиту
- Руниверсалис:Статьи к полной переработке
- Руниверсалис:Статьи с текстом из источников со свободной лицензией
- Руниверсалис:Статьи начального уровня
Источник: xn--h1ajim.xn--p1ai
Типы файлов. Процедуры работы с файлами
По своей связи с работающей программой файлы бывают внутренними и внешними.
ВНЕШНИЕ — это файлы, имена которых включены в список заголовка программы, и которые существуют вне программы, т.е. находятся на внешних носителях (дисках). Такие файлы заполнены заранее, записаны на дискету и могут быть использованы различными программами. Как уже сказано выше, их имена должны быть объявлены в заголовке программы:
program OBRABOTKA (. MESSAGE,PISMO. )
ВНУТРЕННИЕ — это файлы, имена которых не внесены в заголовок программы. Они существуют только во время исполнения программы. Работа с ними идет одинаково, только внутренний файл пропадает после окончания работы программы.
Виды файлов в Linux: «всё есть файл»
В Unix-подобных системах, куда входит и Linux, существует концепция «Всё есть файл». Согласно ей, работа с системой сводится к работе с файлами. Однако файлы в системе «Линукс» бывают разные. Об этом — наша статья.
К файлам в системе Linux относят и объекты, куда мы записываем наши данные, и исполняемые файлы, и файлы специального назначения (устройств, туннелей, сокетов и пр.). Но всё это неважно, ведь мы в любом случае работаем именно с файлами, которые используются и для обычных данных, и для устройств.
Преимущество такой концепции заключается в том, что отпадает необходимость в реализации отдельного набора API для каждого устройства, в результате чего с ним способны работать все стандартные программы системы «Линукс» и API-интерфейсы.
Основные типы файлов Linux
В системе Linux файлы делят на 3 главных типа: 1) обыкновенные (для хранения информации); 2) специальные (для туннелей и устройств); 3) директории.
Теперь рассмотрим каждый из этих типов подробнее.
Обыкновенные файлы
С обычными файлами мы работаем ежедневно. Они содержат текст, изображения, инструкции для работы софта и прочие данные. Это наиболее распространённый файловый тип в системе Linux. Сюда входят: 1) текстовые файлы; 2) файлы изображений, архивов, библиотек; 3) исполняемые и другие файлы.
Для определения файлового типа в режиме списка используется утилита ls. Обычные файлы будут обозначаться чертой:
ls -l /bin/ | grep «^-»
Говоря об обычных файлах в системе, обязательно упомянем форматы. Чтобы система понимала, какой утилитой открывать файлы, необходимо, чтобы они были сохранены в конкретном формате. Форматы тоже можно посмотреть, но уже с помощью команды file:
file /bin/tar
В примере выше система сообщила, что файл является исполняемым. А вот как обстоит дело в случе, если он текстовый:
file /etc/passwd
Так вы можете посмореть все файловые форматы:
file –l
Специальные файлы
Файлы этого типа обеспечивают обмен информацией с ядром, работу с устройствами либо общение между утилитами. С учётом своего назначения они делятся на несколько видов: 1.Блочные. Файлы устройств, обеспечивающие буферный доступ к аппаратным компонентам.
В процессе записи информации на жёсткий диск либо съёмный носитель данные не записываются сразу — это нерационально с точки зрения расходования ресурсов. Поэтому данные сначала собираются в буфере, для чего и используются блочные файлы. Они способны передавать большие блоки информации за один раз, и с их помощью файловая система и прочие утилиты получают возможность взаимодействовать с драйверами аппаратных устройств.
Если вернутся к уже упомянутой программе ls, то блочные файлы обозначаются буквой b. Давайте выведем их из /dev:
ls -l /dev/ | grep «^b»
Файловые типы также умеет определять и утилита file:
file /dev/sda
2.Символьные. С их помощью обеспечивается небуферизованный доступ к ядру и аппаратным компонентам. Это значит, что они могут передавать за раз лишь один символ. В остальном, это те же файлы устройств.
Как и в случае с блочными, вы можете отсортировать их посредством ls. Для символьных файлов предусмотрена буква c (character):
ls -l /dev/ | grep «^c»
3.Символические ссылки. Они указывают на другие файлы по их имени, способны указывать и на обыкновенные файлы, и на каталоги, и на другие файловые типы. Можно сказать, что они аналогичны ярлыкам в системе Windows. Обозначаются буквой l (link):
ls -l /dev/ | grep «^l»
Создать символические ссылки можно посредством утилиты ln:
ln -s file1.txt file2.txt
4.Туннели/именованные туннели. Обеспечивают настройку связи между 2-мя процессами в системе, перенаправляя вывод одного на вход другого. Туннели именованного типа тоже применяются для связи между 2-мя процессами и функционируют, как и обыкновенные туннели.
Для их обозначения существует буква p (pipe):
ls -l /dev/ | grep «^p»
Для создания именованного туннеля воспользуйтесь утилитой mkfifo:
mkfifo pipe1 echo «test test test» > pipe1
В примере выше мы создали туннель и передали в него информацию, а оболочка стала неинтерактивной. Прочитать данные можно на другом конце туннеля:
while read line ;do echo «Data: ‘$line’ «; done
5.Файлы сокетов. Создают прямую связь между процессами в системе. Передают данные между процессами, которые запущены в различных средах либо даже на различных машинах. Означает это следующее: посредством сокетов программы могут осуществлять обмен информацией даже по сети.
Работа сокета похожа на работу туннеля, но в обе стороны.
Для обозначения предусмотрена буква s:
ls -l /dev/ | grep «^s»
Создадим Unix-сокет с помощью утилиты nc:
nc -lU socket.sock
И теперь подключимся к этому сокету из другой консоли:
nc -U socket.sock
Связь функционирует в обоих направлениях, поэтому после нажатия Enter вся информация, которую вы будете вводить в одной из консолей, станет отправляться в другую.
Каталоги
Каталог может содержать и обычные, и специальные файлы, то есть любые файловые типы в системе Linux. Они объединяют файлы (а также другие каталоги) в группы, чтобы упростить навигацию и поиск. В системе Linux файлы организовываются в папки, начиная от корня (/).
Каталоги обозначаются буквой d (directory):
Для создания каталога используют команду mkdir :
mkdir каталог1
Вывод
В статье мы рассмотрели довольно простые вещи, которые касались типов файлов в Linux. Но если вы хотите освоить администрирование операционной системы Linux на продвинутом уровне, имеет смысл ознакомиться со специализированным курсом от практикующих администраторов. Не пропустите:
Источник: otus.ru