Długa nazwa pliku

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Długa nazwa pliku (ang. Long file name, LFN) – metoda firmy Microsoft umożliwiająca nadawanie plikom zapisanym na partycji FAT nazw dłuższych niż 11 (8+3) znaków. Możliwość ta została wprowadzona po raz pierwszy w systemie Windows NT 3.5. Dzięki temu 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 wstecznej ze starszymi systemami operacyjnymi, Microsoft opracował metodę generowania nazw w formacie 8+3 z długiej nazwy pliku i rozszerzenia – na przykład nazwa "Microsoft.txt" przyjmuje postać "MICROS~1.TXT", a kolejna nazwa o tym samym rdzeniu w tymże katalogu np. "Microsoft Word.txt" otrzymuje postać "MICROS~2.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 ukrytych wpisów katalogowych z atrybutem „etykieta woluminowa” (ang. volume label) do systemu plików. Powodem takiego rozwiązania była kompatybilność wsteczna: 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 niechcianą 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 powodujący zmiany we wpisach sektorów partycji FAT mógł spowodować utratę długich nazw plików, dlatego domyślnie bezpośredni dostęp do dysku twardego był wyłączony w tym trybie. 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. Windows NT od wersji 3.1, łącznie z jego programami użytkowymi (w tym również File Manager), obsługiwały 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. W takim przypadku 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 24.

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

Podobne implementacje[edytuj | edytuj kod]

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

Przypisy

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

Linki zewnętrzne[edytuj | edytuj kod]