Введення у файлові системи, страница 32

Довге ім'я записується в каталозі першим, а потім розміщається стандартний описувач файлу з коротким ім'ям. Описувач каталогу для довгого імені розміщаються в зворотному порядку, починаючи з останнього фрагмента. Фрагменти «довгого імені» пронумеровані. У молодших розрядах байта номера фрагмента зберігають власне номер. Розряд 6, імовірно, служить ознакою останнього фрагмента «довгого імені» (має значення 1 тільки в нього, в інших фрагментів — 0), а розряд 7 зарезервований (дорівнює 0).

Оскільки одне довге ім'я файлу разом з коротким може займати до 21 запису, а кореневий каталог FAT обмежений 512 записами, бажано обмежити використання довгих імен у кореневому каталозі.

Для файлової системи довгих імен FAT32 зменшені обмеження по представленню імен файлів:

·  в ім'я можна включати кілька пробілів і крапок, однак, текст після останньої крапки розглядається як розширення;

·  регістр символів в іменах не розрізняється, але зберігається.

Основною задачею при розробці файлових систем VFAT і FAT32 була необхідність коректної роботи старих програм, які не підтримують довгі імена файлів. Файлові функції старих версій DOS і Windows не помітять елемента каталогу в який уставлено байт атрибутів DIR_Attr рівний 0Fh для запису довгих імен файлів. У підсумку для кожного файлу і підкаталогу в VFAT і FAT32 зберігається два імені: довге і коротке у форматі для сумісності зі старими програмами.

Коротке ім'я генерується файловою системою автоматично і для його створення використовується наступний алгоритм:

·  з довгого імені видаляються всі символи, не припустимі в іменах FAT12 і FAT16, і крапки наприкінці і початку імені. Після цього видаляються всі крапки, які знаходяться усередині імені крім останньої;

·  зменшують рядок, розташований перед крапкою, до 6 символів і додають у кінець "~1". Зменшують рядок за крапкою до 3 символів;

·  отримані букви перетворюються в прописні. Якщо генероване ім'я збігається з вже існуючим, то збільшується число в рядку "~1".

Даний алгоритм залежить від версії операційної системи й у майбутніх версіях може змінюватися. Редагування файлів програмами, які не підтримують довгі імена файлів, може приводити до втрати довгих імен. Windows виявляє подібні елементи каталогу, тому що їхня контрольна сума не відповідає даним, які записано в наступному записі каталогу у форматі 8.3. Однак такі записи не видаляються системою автоматично. Вони займають дисковий простір, доти, поки не буде запущено програму ScanDisk, яка входить до складу операційної системи. Більшість старих дискових утиліт сприймуть записи, що відповідають довгим іменам, як помилки логічної структури диску. Спроби використовувати дані утиліти, у кращому випадку приведе до втрати довгих імен, а в гіршому - до втрати інформації на диску.