. Как видно из рисунка, в каталоге для данного файла содержится номер первого кластера, занимаемого файлом.Этот номер одновременно определяет точку входа в FAT. Находящийся в ней элемент FAT указывает одновременно на очередной кластер файла и на очередной элемент FAT и т. д. до элемента таблицы, содержащего признак конца файла.
Каталог представляет собой справочник, содержащий сведения о местоположении, размере, дате и времени обновления файлов. Для каждого файла на диске имеется один элемент в определённом каталоге. Один элемент корневого каталога выделяется для метки диска. Для каждого каталога имеется элемент в его родительском каталоге. Кроме того, каждый каталог, за исключением корневого, содержит по одному элементу для специальных имен «.» и «..», Эти элементы указывают начало цепочки в FAT соответственно для самого каталога и для его родительского каталога. Такая система описания каталогов обеспечивает возможность сокращенного написания пути к данному файлу, когда он походит через родительский каталог. Здесь особенно важна возможность написания программ, просматривающих все дерево каталогов произвольной структуры.
Каждый элемент каталога имеет длину 32 байта и структуру, представленную в таблице:
Длина, байт | Содержимое поля |
8 | Имя файла, каталога или тома |
3 | Расширение имени файла |
1 | Байт атрибутов |
10 | Резервное поле |
2 | Код времени изменения файла |
2 | Код даты изменения файла |
2 | Номер первого кластера файла (подкаталога) |
4 | Размер файла |
Полеимени. Если имя файла содержит меньше 8 символов, то справа оно дополняется пустыми позициями. Пробелы в записи имени файла недопустимы. Однако большинство системных функций позволяют создавать файлы с пробелами в поле имени, которые трудно удалить обычным способом.
Код 00 в первом байте поля имени показывает, что этот элемент каталога ранее не использовался. Так как каталог заполняется последовательно, это означает, что и следующие за ним элементы также не использовались. Это позволяет избежать лишних поисков в каталоге. При стирании файла в первом байте соответствующего элемента каталога записывается код Е5. Все остальные байты элемента не изменяются. Сохраняемая в каталоге и FAT информация после удаления файла позволяет выполнять его восстановление, если занимаемое им ранее дисковое пространство не было выделено другому файлу.
Код 2Е (символ «.») в первом байте показывает, что элемент описывает сам каталог. Если и во втором байте содержится код 2Е, то элемент описывает родительский каталог («..»).
Расширение имени. Если элемент каталога описывает файл, то это поле может быть и пустым. В противном случае это поле используется, когда в элементе корневого каталога указывается метка тома.
Атрибуты файла.Каждый бит этого поля задает определенный атрибут:
№ бита | Назначение |
0 | Защищенный |
1 | Скрытый |
2 | Системный |
3 | Метка тома |
4 | Каталог |
5 | Архивный |
6 | Не используется |
7 | Не используется |
Поле «время». Его содержимое рассматривается как целое число без знака, полученное по следующей формуле: часы?2048 + минуты ? 32 + секунды / 2. Для выполнения обратного преобразования следует разделить содержимое поля времени на 2048, частное от деления даст нам часы. Деление остатка на 32 дает нам частное, равное числу минут, а полученный остаток при умножении его на 2 дает секунды.
Поле «дата». Содержимое его рассматривается как целое число без знака, полученное по следующей формуле: (год-1980)? 512 + месяц ? 32 + день.По этой формуле календарь поддерживается с 1980 года по 2108 год (из-за ограниченности ширины поля даты).
Номер первого кластера. Содержимое этого поля одновременно служит указателем к первому кластеру файла в поле данных и к первому элементу в цепочке FAT. Для файлов, которым не выделено места на диске, и для метки тома это поле содержит 0000h.