Как определить какой вид информации содержится в файле
Формат файла, формат данных — спецификация структуры данных, записанных в компьютерном файле. Идентификатор формата файла, как правило, указывается в конце имени файла в виде «расширения». Расширение имени файла помогает идентифицировать формат данных, содержащихся в файле, программам, которые могут с ним работать. Иногда формат данных дополнительно указывается в начале содержимого файла.
В операционной системе для определения программы, которая может открыть какой-либо файл, применяется сопоставление (ассоциирование) файлов и программ.
Например, окончание имени (расширение) «.txt» обычно используют для обозначения файлов, содержащих только текстовую информацию, а «.doc» — содержащих текстовую информацию, структурированную в соответствии со стандартами программы Microsoft Word. Файлы, содержимое которых соответствует одному формату (реже — одному семейству форматов), иногда называют файлами одного типа.
Так как общепринятая в вычислительной технике концепция файла — неструктурированная последовательность байтов, компьютерные программы, сохраняющие структурированные данные в файлы, должны как-то преобразовывать их в последовательность байтов и наоборот (в ООП эти операции называются, соответственно, «сериализацией» и «десериализацией»; для текстовой информации последнее также называется «разбор» или «парсинг»). Алгоритм этих преобразований, а также соглашения о том, как различные фрагменты структурированных данных располагаются внутри файла, и составляют его «формат».
Различные форматы файлов могут различаться степенью детализации, один формат может быть «надстройкой» над другим или использовать элементы других форматов. Например, текстовый формат накладывает только самые общие ограничения на структуру данных. Формат HTML устанавливает дополнительные правила на внутреннее устройство файла, но при этом любой HTML-файл является в то же время текстовым файлом.
Другой пример — структура компьютерных программ — исполняемых файлов: она должна строго соответствовать некоторым ожиданиям (спецификации) запускающей её операционной системы.
Спецификации[править | править код]
Для многих форматов файлов существуют опубликованные спецификации, в которых подробно описана структура файлов данного формата, то, как программы должны кодировать данные для записи в этот формат и как декодировать их при чтении. Большинство таких спецификаций свободно доступны, некоторые распространяются за плату.
Иногда компании могут считать определённые форматы файлов своей коммерческой тайной и не публиковать их. Хорошо известный пример — форматы файлов пакета Microsoft Office. Однако, с переходом на открытый формат Office Open XML, компания Microsoft, все же опубликовала спецификации форматов под OSP[en][1][2][3]. В некоторых случаях компания, выпустившая приложение, просто не считает нужным тратить время на написание подробной спецификации.
Если спецификация формата недоступна, то для обеспечения совместимости программы с данным форматом приходится заниматься обратной разработкой. В большинстве или во всех странах форматы файлов не защищены законами об авторских правах. Однако в некоторых странах патентами могут быть защищены алгоритмы, используемые для кодирования данных в какой-либо формат. Например, в широко распространённом формате GIF использовался патентованный алгоритм (срок действия патентов в разных странах истек в 2003—2004 гг.), что привело к разработке альтернативного формата PNG.
Определение типа файла[править | править код]
Тип файла — это информация для быстрой идентификации содержимого файла операционной системой и пользователем без необходимости считывания всего содержимого файла. Благодаря этой информации пользователь приблизительно знает тип содержащейся информации в файле, а в операционной системе может быть сопоставлена программа для обработки файлов данного типа.
Для того, чтобы правильно работать с файлами, программы должны иметь возможность определять их тип. По историческим причинам, в разных операционных системах используются разные подходы для решения этой задачи.
Расширение имени файла[править | править код]
Некоторые операционные системы, например, 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)
Примечания[править | править код]
Ссылки[править | править код]
- Энциклопедия форматов файлов (англ.)
- 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 (англ.)
Источник
Программы и данные хранятся на диске в виде файлов (от англ. file — папка для бумаг, досье). Содержимым файла может быть произвольный
текст, программа, таблица, рисунок и т.д.
На жёстком диске может находиться множество файлов. Чтобы избежать путаницы, каждый файл, расположенный на диске, имеет своё имя, а также место
расположения. Любой файл можно расположить в папке.
- Задание на ЯКласс по темам “Файлы и папки”, “Размер файла”.
Работа с файлами реализуется средствами операционных систем. Многие операционные системы
приравнивают к файлам и обрабатывают сходным образом и другие ресурсы:
- области данных (необязательно на диске);
- устройства — как физические, например, порты или принтеры, так и виртуальные (/dev/null, генератор случайных чисел);
- потоки данных (именованный канал);
- сетевые ресурсы, сокеты;
- прочие объекты операционной системы.
Плакат “Файлы и файловые структуры”
Слово file впервые применено к компьютерному хранилищу в 1950 году. Реклама памяти на запоминающих ЭЛТ фирмы RCA в журнале «Popular
Science» гласила:
В 1952 году слово file отнесли к колоде перфокарт. Поначалу словом file называли само устройство памяти, а не его содержимое.
Имена файлов в CTTS состояли из двух частей, «основного имени» и «дополнительного имени» (последнее существует и поныне как расширение имени файла).
Имя файла — строка символов, однозначно определяющая файл в
некотором пространстве имён файловой системы (ФС), обычно называемом каталогом, директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой
и операционной системах.
Имя файла является частью полного имени файла, также называемого полным или абсолютным путём к файлу. Полное имя может включать
следующие компоненты:
- протокол или способ доступа (http, ftp, file и т. п.);
- имя или адрес компьютера, узла сети (wikipedia.org, 207.142.131.206,\MYCOMPUTER, SYS: и т. п.);
- устройство хранения, диск (C:, /, SYSLIB и т. п.);
- путь к каталогу (/usr/bin, TEMP, [USR.LIB.SRC] и т. п.);
- собственно имя файла, которое может содержать его расширение (.txt, .exe, .COM и т. п.);
- версия или номер ревизии.
Имя файла необходимо для того, чтобы к файлу мог обратиться пользователь. В одном каталоге не может быть двух файлов с одинаковыми именами (некоторые файловые системы регистрозависимы, что
оставляет возможность для создания файлов, имена которых отличаются регистром символов).
Имя файла состоит из двух частей, разделенных точкой:
- Название (до точки, часто также называют именем);
- Расширение (необязательная часть).
Расширение имени файла (англ. filename extension,
часто говорят просто расширение файла или расширение) — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа (формата) файла. Это
один из распространённых способов, с помощью которых пользователь или программное обеспечение компьютера может определить тип данных, хранящихся в файле.
- Список форматов
файлов
Вид расширения | Тип (формат) файла | Программа |
.exe | Исполняемый файл — файлы, содержащие готовые к исполнению программы | Любая рабочая программа Windows, DOS, Symbian, OS/2 |
.msi | Инсталлятор программ — файл, который устанавливает программы | Пакет программ, требующих установки |
.doc(docx) | Документ Word (Word 2007 и выше) | MS Word, одно из приложений Office |
.xls(xlsx) | Файл таблиц Excel (Excel 2007 и выше) | MS Excel, одно из приложений Office |
.txt | Текстовый файл простого формата (документ) | Блокнот |
.ppt(pptx) | Файл презентаций PowerPoint | MS PowerPoint, одно из приложений Office |
.accdb | База данных Access | MS Access, одно из приложений Office |
.mp3, .flac, .ape, .ogg, .waw, .ac3, .wma, .m4a, .aac и другие форматы | Звуковой (цифровой) файл | Любой аудио-плеер (не только Windows) |
.bmp, .jpg(jpeg), .png, .gif, .tiff, .ico, .raw | Файл изображения | Стандартные менеджеры изображений, иногда специальные программы для конкретного формата |
.avi, .wmw, .mkv, .3gp, .flv, .mpeg, .mp4, .mov, .vob | Видео файлы | Различные плееры |
.swf, .flv | Флеш- или видеофайлы в Интернете | Воспроизводятся любым браузером с установленным flash-проигрывателем |
.rar, .zip, .7z, .tar, .gzip, .gz, .jar | Архивный контейнер | В большинстве случает хватает WinRar и 7-Zip для работы со всеми популярными архивами |
.html, .htm, .php | Веб-страница | Браузеры |
.djvu | Файл сжатых изображений. Используется для точной передачи информации (сканированные книги, исторические документы) без потери данных | Любая программа для чтения djvu-файлов. WinDJView, DJVUReader и т.д. |
Файл электронного документа, подходит для передачи любой полиграфической продукции и прочего | Adobe Reader, Foxit PDF Reader и прочие |
- – разделитель подкаталогов
- / – разделитель ключей командного интерпретатора
- : – отделяет букву диска или имя альтернативного потока данных
- * – заменяющий символ (маска “любое количество любых символов”)
- ? – заменяющий символ (маска “один любой символ”)
- ” – используется для указания путей, содержащих пробелы
- < – перенаправление ввода
- > – перенаправление вывода
- | – обозначает конвейер.
Название атрибута | перевод | значение | файловые системы | операционные системы |
---|---|---|---|---|
READ ONLY | только для чтения | в файл запрещено писать | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
SYSTEM | системный | критический для работы операционной системы файл | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
HIDDEN | скрытый | файл скрывается от показа, пока явно не указано обратное | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
ARCHIVE | архивный (требующий архивации) | файл изменён после резервного копирования или не был скопирован программами резервного копирования | FAT32, FAT12, FAT16, NTFS, HPFS, VFAT | DOS, OS/2, Windows |
SUID | Установка пользовательского ID | выполнение программы от имени владельца | ext2 | Unix-like |
SGID | Установка группового ID | выполнение программы от имени группы (для каталогов: любой файл созданный в каталоге с установленным SGID, получит заданную группу-владельца) | ext2 | Unix-like |
Sticky Bit | липкий бит | изначально предписывал ядру не выгружать завершившуюся программу из памяти сразу, а лишь спустя некоторое время, чтобы избежать постоянной загрузки с диска наиболее часто используемых программ, в настоящее время в разных ОС используется по-разному | ext2 | Unix-like |
- Открытие файла (обычно в качестве параметров передается имя файла, режим доступа и режим совместного доступа, а в качестве значения выступает файловый хэндлер или
дескриптор), кроме того обычно имеется возможность в случае открытия на запись указать на то, должен ли размер файла изменяться на нулевой. - Закрытие файла. В качестве аргумента выступает значение, полученное при открытии файла. При закрытии все файловые буферы сбрасываются.
- Запись — в файл помещаются данные.
- Чтение — данные из файла помещаются в область памяти.
- Перемещение указателя — указатель перемещается на указанное число байт вперёд/назад или перемещается по указанному смещению относительно начала/конца. Не все файлы
позволяют выполнение этой операции (например, файл на ленточном накопителе может не «уметь» перематываться назад). - Сброс буферов — содержимое файловых буферов с не записанной в файл информацией записывается. Используется обычно для указания на завершение записи логического блока (для
сохранения данных в файле на случай сбоя). - Получение текущего значения файлового указателя.
Систему хранения файлов можно представить, как хранение книг в библиотеке:
При работе с файлами не следует:
– удалять файл, точно не выяснив, обязательно ли это следует делать;
– давать файлу имя, которое не поясняет его содержание;
– сохранять файл в той папке, где его потом будет трудно найти;
– удалять или перемещать файлы, находящиеся в папках прикладных программ — это может привести к тому, что
программы перестанут работать.
Для уменьшения места, занимаемого файлами, с целью долговременного хранения или передачи по компьютерным сетям файлы архивируются с помощью файловых менеджеров или
специализированных приложений — архиваторов.
Существуют различные алгоритмы архивации данных без потери информации, при которых при разархивации данные будут восстановлены.
Самый простой алгоритм сжатия данных основан на замене повторяющихся битов более короткой последовательностью битов.
Алгоритм кодирования одинаковых последовательностей символов ищет в текстовых файлах одинаковые подстроки, а в графических — близкие по цвету последовательности пикселей. Каждый такой
фрагмент файла представляется более коротким кодом и в процессе архивации при повторных появлениях заменяется ссылкой на первичный код.
Существуют различные архиваторы файлов (ZIP, 7-ZIP, RAR).
Каталог (англ. directory — директория, справочник, указатель) — объект в файловой системе, упрощающий
организацию файлов. Типичная файловая система содержит большое количество файлов, и каталоги помогают упорядочить её путём их группировки.
В информатике используется следующее определение: каталог — поименованная совокупность байтов на носителе информации, содержащая название подкаталогов и файлов.
- Список файловых систем
Запись о файле в каталоге содержит имя файла, адрес первого кластера, с которого начинается файл, размер файла, дату и
время его создания, а также атрибуты файла.
Если на диске хранятся сотни и тысячи файлов, то для удобства поиска файлы хранятся в многоуровневой иерархической
файловой системе, которая имеет древовидную структуру.
Корневая папка содержит вложенные папки 1-го уровня (например, папка «7 класс»), в свою очередь, каждая из них может содержать вложенные папки 2-го уровня (например,
папка «7 класс» содержит папки «Домашнее задание» и «Работа на уроке»).
Каталог, прямо или косвенно включающий в себя все прочие каталоги и файлы файловой системы, называется корневым. В Unix-подобных ОС он обозначается
символом / (дробь, слеш), в DOS и Windows исторически используется символ (обратный слеш), но с некоторого времени поддерживается
и /.
Текущим называется каталог, с которым работает ОС, если ей не указать другого каталога. Он обозначается точкой (.).
Для смены текущего каталога на другой используется команда cd; без указания целевого каталога она возвращает текущий.
Родительским каталогом называется каталог, в котором находится текущий. Он обозначается двумя точками (..).
Каталог, который не является подкаталогом ни одного другого каталога, называется корневым. Это значит, что этот каталог находится на самом верхнем уровне иерархии всех каталогов.
В Windows каждый из дисков имеет свой корневой каталог (C:, D: и т. д).
Каталоги в Windows бывают системные (служебные, созданные ОС) и пользовательские (созданные пользователем).
Пример системных каталогов: «Рабочий стол», «Корзина», «Сетевое окружение», «Панель управления», каталоги логических
дисков и т. п.
Логическая структура носителя информации в распространённой файловой системе FAT имеет следующие разделы:
1. Загрузочный кластер;
2. Таблицу размещения файлов, которая содержит в своих ячейках цепочку номеров кластеров для каждого файла;
3. Корневой каталог;
4. Файлы.
Минимальным адресуемым элементом носителя информации является кластер,
который может включать в себя несколько секторов (объём сектора составляет 512 байтов).
Размер кластера (от 512 байт до 64 Кбайт) зависит от типа используемой системы.
Кластеры нумеруются в линейной последовательности.
Файловая система организует кластеры в файлы и каталоги. Файловая система отслеживает, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
При записи файлов будет занято всегда целое количество кластеров, соответственно, минимальный размер файла равен размеру одного кластера, а максимальный соответствует общему количеству кластеров
на диске.
Источник