Długa nazwa pliku

Z Wikipedii, wolnej encyklopedii

Długa nazwa pliku (ang. Long File Name, LFN) – metoda firmy Microsoft umożliwiająca nadawanie nazw dłuższych niż 11 znaków (8 znaków nazwy + 3 znaki rozszerzenia) plikom zapisanym na partycji z systemem plików FAT. Została ona wprowadzona po raz pierwszy w 1994 r. w systemie operacyjnym Windows NT 3.5.

Dzięki LFN nazwa pliku może zawierać do 250 znaków[1] w standardzie UTF-16[2][3], wliczając w to spacje, znaki niealfanumeryczne (z wyjątkiem znaków o specjalnym znaczeniu dla jądra systemu: \ / : * ? " < > |). W celu zachowania kompatybilności ze starszymi systemami operacyjnymi, Microsoft opracował metodę generowania krótkich nazw w formacie 8+3 z długich nazw plików i powiązania ich ze sobą. Przykładowo nazwa „Microsoft.txt” przyjmuje postać „MICROS~1.TXT”, kolejna nazwa o tym samym rdzeniu w tymże katalogu np. „Microsoft Word.txt” otrzymuje postać „MICROS~2.TXT”, natomiast piętnastą z kolei nazwą o tym rdzeniu będzie „MICRO~15.TXT” itd.).

Problemy ze zgodnością[edytuj | edytuj kod]

Sposób, dzięki któremu możliwa była implementacja LFN do systemu plików FAT, polegał na dodaniu w katalogach ukrytych wpisów z atrybutem „etykieta woluminowa” (ang. volume label). Powodem takiego rozwiązania była chęć zachowania kompatybilności wstecznej, a etykiety woluminowe są przeważnie ignorowane przez programy i starsze systemy operacyjne. Dodatkowo dla tych wpisów w katalogu ustawiane były atrybuty „systemowy”, „ukryty” i „tylko do odczytu”, by dodatkowo zabezpieczyć te nazwy przed niepożądaną modyfikacją[3]. Programy pracujące pod kontrolą starszych systemów operacyjnych dalej miały dostęp do plików, podczas gdy nowsze systemy operacyjne mogły korzystać z długich wersji tychże nazw.

Gdy po raz pierwszy długie nazwy plików zostały zastosowane w Windows 95 bazującym na MS DOS, implementacja sprawiała problemy przy korzystaniu z programów obsługujących tylko model nazewnictwa 8+3. Każdy program DOS-owy uruchomiony już pod kontrolą Windows i wprowadzający zmiany we wpisach katalogów partycji FAT mógł spowodować utratę długich nazw plików, dlatego domyślnie bezpośredni dostęp do dysku twardego był w tym trybie wyłączony. Również po uruchomieniu czystego DOS-a długie nazwy nie były dostępne bez instalacji odpowiedniego sterownika LFN. Microsoft postanowił także nie wprowadzać obsługi długich nazw plików w starszych programach. Wśród nich wyróżniał się File Manager – menedżer plików dla systemu Windows for Workgroups 3.11. Natomiast Windows NT już od wersji 3.1, łącznie z jego programami użytkowymi (w tym również File Managerem), obsługiwał LFN w systemie plików NTFS.

System OS/2 firmy IBM posiadał własną metodę obsługi długich nazw plików w systemie FAT, niekompatybilną z wersją Microsoftu. Był to dodatkowy atrybut zapisywany jako .LONGFILE. Istniała jednakże możliwość zmiany sposobu obsługi długich nazw poprzez zastosowanie innego sterownika.

Ograniczenia[edytuj | edytuj kod]

Implementacja LFN w FAT dodatkowo była ograniczona starszym systemem nazewnictwa plików. Trudności pojawiały się np. przy próbie utworzenia 100 plików, w których nazwy rozpoczynały się od tych samych 6 znaków, np. Windows 3.11.txt, Windows 95.txt itd.[4]. Przeszkody pojawiały się także przy tworzeniu plików i folderów w katalogu nadrzędnym systemu (ang. root directory) zwanym również katalogiem głównym. FAT16 umożliwiał przechowywanie do 512 pozycji w katalogu nadrzędnym, a każda pozycja była rekordem 32-bajtowym, w którym mieściła się informacja o 13 2-bajtowych znakach kodowanych zgodnie z UTF-16. Z tego wynika, że nazwa pliku o długości 250[1] znaków zajmowała 20 pozycji w katalogu i dodatkowo 1 pozycję ze starą nazwą pliku[3] – razem 21 pozycji. Tym sposobem liczba możliwych plików i folderów do utworzenia została drastycznie zmniejszona – przy maksymalnych długościach nazw plików wynosiła ona 512/21, czyli zaledwie 24 pozycje.

Sterowniki LFN[edytuj | edytuj kod]

Lista systemów operacyjnych i sterowników umożliwiających odczyt długich nazw plików systemu Windows 95:

System operacyjny Nazwa sterownika Obecność w systemie
OS/2 VFAT-OS2 wymagana instalacja
DR-DOS LFNDOS tak
FreeDOS DOSLFN wymagana instalacja
Windows NT 4.0 NTLFN wymagana instalacja

Podobne implementacje[edytuj | edytuj kod]

Przed wprowadzeniem Windows NT i OS/2 istniała implementacja długich nazw plików w systemie MacOS, na komputery Macintosh 128K. System operacyjny AmigaOS już w 1985 r. pozwalał na użycie do 30 znaków w nazwach plików. Natomiast Novell NetWare w wersjach 3.x i 4.x jest kompatybilny z długimi nazwami Microsoftu, jeśli załaduje się dodatkowy moduł NetWare Loadable Module (NLM)[5].

Przypisy[edytuj | edytuj kod]

  1. a b Errors Creating Files or Folders in the Root Directory. Microsoft, 19 stycznia 2007. [dostęp 2009-07-06]. (ang.).
  2. Nancy Winnick Cluts: Making Room for Long Filenames. Microsoft Developer Network, styczeń 1995. [dostęp 2009-07-06]. (ang.).
  3. a b c Long Filename Specification. 18 listopada 1996. [dostęp 2009-07-06]. [zarchiwizowane z tego adresu (2001-04-20)]. (ang.).
  4. MSDOSFileSystem. CocoaDev, 3 października 2008. [dostęp 2009-07-06]. [zarchiwizowane z tego adresu (2006-10-18)]. (ang.).
  5. Windows NT, Long Filenames on NetWare. Novell, 14 marca 1995. [dostęp 2009-07-06]. [zarchiwizowane z tego adresu (2011-06-06)]. (ang.).

Linki zewnętrzne[edytuj | edytuj kod]