Поддержка длинных имен файлов ( LFN ) — это обратно совместимое расширение Microsoft для схемы именования имен файлов 8.3 (короткое имя файла), используемой в MS-DOS . Длинные имена файлов могут быть более описательными, включая более длинные расширения имен файлов , такие как .jpeg
, .tiff
, и , .html
которые распространены в других операционных системах, а не специализированные сокращенные имена, такие как .jpg
, .tif
, или .htm
. Стандарт был распространен в файловых системах File Allocation Table (FAT) с момента его первой реализации в Windows NT 3.5 в 1994 году.
Для поддержания совместимости со старыми операционными системами компания Microsoft разработала метод генерации имени файла 8.3 из длинного имени файла (например, Microsoft.txt
) MICROS~1.TXT
и связывания его с файлом.
Microsoft реализовала поддержку LFN в файловой системе FAT, используя скрытые записи каталогов типа метки тома для хранения длинных имен; эта схема известна как VFAT и была выбрана для совместимости, поскольку метки томов обычно игнорируются программами и компонентами операционной системы (ОС). Программы, работающие на старых ОС, по-прежнему могли получать доступ к коротким именам файлов, в то время как более новые ОС и программы, поддерживающие LFN, могли использовать более длинные.
Когда поддержка LFN впервые была введена в операционную систему на базе DOS в виде Windows 95 , это вызвало некоторые проблемы для старых программ. Например, программа DOS, выполняющая операции на уровне секторов каталогов, когда Windows находилась в режиме DOS, могла уничтожить длинную информацию об именах файлов, поэтому по умолчанию доступ на уровне секторов к жестким дискам в этом режиме был запрещен.
При загрузке в простой DOS длинные имена файлов не видны, если не установлен драйвер VFAT LFN. Microsoft не добавила поддержку LFN во многие из своих старых программ, включая File Manager , файловый менеджер Windows 3.1x (Windows for Workgroups), который устарел из-за новой оболочки операционной системы Windows Explorer . Windows NT поддерживала LFN в файловых системах NTFS, начиная с выпуска NT 3.1, и все ее утилиты, включая File Manager, были обновлены для поддержки LFN. NT 3.5 добавила поддержку FAT LFN в рамках подготовки к Windows 95. Однако версия File Manager для Windows 95 появилась в Windows for Workgroups 3.11.
OS/2 хранит LFN для файловых систем FAT в .LONGNAME
расширенных атрибутах , которые несовместимы с реализацией Microsoft и видны только инструментам, поддерживающим стандарт OS/2. Многие API, предоставляющие доступ к файлам по имени пути, не могут видеть новые, более длинные имена без поддерживающего драйвера.
Поскольку реализация FAT LFN накладывается поверх старой, более ограниченной системы именования, возникают неизбежные осложнения, например, если будет предпринята попытка создать слишком много файлов с одинаковыми первыми шестью буквами. [1] Кроме того, более вероятно возникновение проблем при создании файлов или папок в корневом каталоге, поскольку FAT12 и FAT16 выделяют место только для 512 записей корневого каталога на жестких дисках. Поскольку длинные имена файлов используют более одной записи каталога, эта проблема может возникнуть при менее чем 512 файлах или папках в корневом каталоге. [2] Есть место только для 24 длинных имен файлов максимальной длины (512/(1+20)). Эта проблема не существует для томов FAT32 .
Система длинных имен файлов допускает максимальную длину 255 символов UCS-2 [3] [4], включая пробелы и не буквенно-цифровые символы (за исключением следующих символов, которые имеют особое значение в командном интерпретаторе COMMAND.COM или ядре операционной системы: \ / : * ? " < > |
). Это достигается путем объединения до 20 записей каталога по 13 2-байтовых символов Unicode каждая. [4] Максимальная длина имени пути составляет 256 символов, включая все родительские каталоги и имя файла. Длинное имя файла со смешанным регистром длиной 255 символов возможно только для файлов или папок без подпапок в корневой папке любого диска.
Хотя поддержка длинных имен файлов допускает более длинные имена файлов и каталогов, в системах на базе DOS абсолютный путь к файлу, построенный из соответствующих коротких эквивалентов имен файлов и каталогов, по-прежнему представлен во внутренней структуре данных, называемой структурой текущего каталога (CDS), [5] [6] [7] [8] , которая накладывает ограничение в 66 символов на (короткое) имя пути и тем самым косвенно ограничивает также глубину пути максимум 33 уровнями (с учетом корневого каталога и предполагая только однобуквенные имена). (Это ограничение конструкции отсутствовало в более старых версиях DR DOS (до обновлений DR DOS 6.0 от ноября 1991 г.), которые по-прежнему использовали относительное представление пути внутри себя, [7] [8] [9] однако из-за своих внутренних различий эти версии несовместимы с существующими дополнительными драйверами LFN.) Операционные системы, не основанные на DOS, без CDS не ограничены этим ограничением глубины пути.
Ниже приведен список драйверов, которые можно использовать для поддержки длинных имен файлов VFAT, используемых в Windows 95. Хотя такие драйверы, как DOSLFN, можно загрузить практически в любую версию DOS, лучше всего они работают в версиях DOS, которые поддерживают LFN, например MS-DOS 7.10 или DR-DOS 7.02 , чтобы такие команды DOS, как , DIR
также отображали длинные имена файлов.
Некоторые небольшие программы реального режима DOS также были написаны за эти годы, хотя многие из них были утеряны со временем. Одна из примечательных коллекций программ, которая все еще существует, — это LFN Tools, которая имеет открытый исходный код и включает в себя семь полезных команд LFN, написанных на C++ и ассемблере, с включенной документацией на английском и немецком языках, и доступна на LFNTOOLS на Sourceforge.net.
До того, как поддержка LFN была реализована в семействе файловых систем FAT, различные файловые менеджеры предоставляли собственные методы для присоединения и сохранения более длинных описаний файлов. Среди первых, кто это сделал, были альтернативные процессоры командной строки 4DOS и NDOS с их внутренними DESCRIBE
командами и соответствующими DESCRIPT.ION
файлами. Последние представляют собой необязательные скрытые файлы, расположенные в каждом каталоге, хранящие построчный список имен файлов, расположенных в каталоге, вместе с их текстовым описанием и необязательными записями метаданных — например, расширенными атрибутами и данными конфигурации для других программ. [10] Описания могут быть длиной до 511 символов и отображаются вместе с именами файлов примерно так же, как длинные имена файлов указываются рядом с их короткими псевдонимами имен файлов в DIR
листингах. Если запись для файла существует, она будет скопирована и перемещена вместе с файлом до тех пор, пока эти процессоры командной строки используются для выполнения операции. [9] Эта схема все еще поддерживается преемниками, такими как 4OS2 , 4NT / Take Command . Его также использовали другие программы, такие как Volkov Commander (VC), DOS Navigator (DN), Open DOS Navigator (ODN), Necromancer's DOS Navigator (NDN), Windows Commander , Total Commander , Double Commander , 7-Zip , XnView , ACDSee , Newsbin Pro , V, FreeDOS [11] и некоторые приложения на базе CUI_LIB [12] .
Human68K , операционная система компьютеров X68000 с 1986 года, основана на расширенной файловой системе FAT. Она допускает до 18,3 символов в имени файла (вместо 8,3 в FAT) и допускает также символы верхнего и нижнего регистра (а также кандзи в коде Shift JIS ), которые все рассматриваются как отличительные. Если ограничиться использованием имен файлов в формате 8,3 только с символами верхнего регистра, дискеты Human68K полностью совместимы с японским стандартным форматом дискет FAT 1232 КиБ (77 цилиндров, 2 головки, 8 секторов, 1024 байта/сектор). Этот формат используется компьютерами серий NEC PC-9800 , Fujitsu FMR и FM Towns . [ необходима цитата ]
Тома Novell NetWare версий 3.x и 4.x также могут поддерживать длинные имена файлов, совместимые с Microsoft, путем загрузки дополнительного загружаемого модуля NetWare (NLM). [13]
Для поддержки приложений Java без реализации схемы, совместимой с VFAT , в операционной системе IBM 4690 версии 2 на базе FlexOS была введена собственная архитектура виртуальной файловой системы (VFS) для хранения длинных имен файлов в файловой системе FAT в обратно совместимом режиме. Если эта опция включена, виртуальные имена файлов (VFN) доступны под отдельными буквами логических дисков, тогда как реальные имена файлов (RFN) остаются доступными под исходными буквами дисков. [14]
MPDOSTIP.ZIP
коллекции автора, которая поддерживалась до 2001 года и распространялась на многих сайтах в то время. Приведенная ссылка указывает на более старую версию файла, преобразованную в HTML NWDOSTIP.TXT
.) [3]0x23
('#'), используемые различными утилитами, написанными Маттиасом Р. Полом для разделенных пробелами списков текстовых пар ключ=значение, содержащих свойства файла в виде расширенных атрибутов , таких как CP (кодовые страницы), PC (коды языков), CW (битовая ширина), XS (ширина страницы), YS (длина страницы), XO (смещение по оси x печати), YO (смещение по оси y печати), CR (авторское право), URL (исходная ссылка) и т. д., 0x25
('%') используется программами, использующими CUI_LIB для хранения переменных псевдосреды , 0xED
зарезервировано для Digital Research / Novell / Caldera и 0xFD
для FreeDOS .)4DOS5TIP.TXT
, которая является частью коллекции MPDOSTIP.ZIP
.) [4]