Структура файлов.

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

    * в начале файла должен находиться заголовок (header). Сам заголовок тоже обладает внутренней структурой:

    - заголовок начинается с двухбайтовой сигнатуры, или «магического числа». Сигнатура однозначно дает понять, что это за файл или какой программой он был создан. Например, EXE-файл всегда начинается с символов MZ, архив RAR содержит в своем коде сигнатуру RAR;

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

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

    * в некоторых файлах могут присутствовать вспомогательные компоненты: палитра, кодовая таблица, внедренные данные шрифтов, макросов и т. д. В отдельных форматах, наподобие документов Microsoft Office или Corel, такие данные могут превышать по объему все прочее;

    * файл также содержит и собственно пользовательские данные документа. В некоторых сложных документах такие данные организованы в виде цепочек или порций (chunks). В этом случае в заголовках даются ссылки на начало и размер каждой порции;

    * указатель конца файла (EOF, End of File) или контрольная сумма (CRC) подтверждают целостность файла. Это необязательный компонент.

Если части файла находятся в указанных кластерах, с точки зрения ФС все в порядке. Однако о целостности файла в полной мере может судить только программа, предназначенная для работы с этим типом файлов. Файл либо открывается, как надо, либо не открывается. В случае исполняемых файлов последнее слово остается за компонентами ОС — программа либо выполняется, либо не запускается или прерывается с ошибкой.