Как отличить каталог и запись файла в fat16?

Если в системе fat16 я очень запутался в различении подкаталога и файла. Поскольку подкаталог и файл имеют схожую структуру, как мы можем различить каталог и файл и как нам пройти через каталоги, чтобы добраться до файла?

Сначала я думал, что все записи каталога будут начинаться с '0x2e' как 1-го байта соглашения по именованию в 8.3 в fat16. Но практически я не смог найти все каталоги, начинающиеся с 0x2e, но непосредственно имя каталога. Итак, как я могу отличить каталог и файл в fat16?

1 ответ

Решение

Каталоги имеют бит 0x10, установленный в поле атрибута; файлов нет. Первый байт "." (0x2E) для каталогов self и parent, если они есть (которых они не находятся в корне).

Содержимое каталога "файл" представляет собой массив записей каталога.

Игнорирование длинных имен файлов, способ поиска файла:

  1. SearchDirectory = root
  2. Парсинг 8.3 имени с оставшегося пути
  3. DirectoryEntry = Искать имя 8.3 в SearchDirectory
  4. Если оставшийся путь пуст, то DirectoryEntry является запрошенным объектом
  5. Если Directory.Attribute & 0x10 == 0, то ERROR (ожидается каталог)
  6. SearchDirectory = DirectoryEntry.contents
  7. Goto 2
Другие вопросы по тегам