ロングファイル名( LFN ) サポートは、MS-DOSで使用されていた8.3 ファイル名(ショートファイル名) 命名規則のMicrosoftによる下位互換性のある拡張機能です。ロングファイル名は、他のオペレーティングシステムで一般的な、、、などの長いファイル名拡張子を含め、より説明的な名前を使用できます。これは、、、、などの特殊な短縮名とは異なります。この標準は、1994 年のWindows NT 3.5で初めて実装されて以来、ファイルアロケーションテーブル(FAT)ファイルシステムで広く使用されています。.jpeg.tiff.html.jpg.tif.htm
古いオペレーティングシステムとの互換性を維持するために、マイクロソフトは長いファイル名(たとえば、Microsoft.txtからMICROS~1.TXT)から8.3のファイル名を生成し、それをファイルに関連付ける方法を考案しました。
Microsoftは、ボリュームラベルタイプの隠しディレクトリエントリを使用して長いファイル名を格納することで、FATファイルシステムにおけるLFN(長いファイル名)のサポートを実装しました。この方式はVFATと呼ばれ、ボリュームラベルは一般的にプログラムやオペレーティングシステム(OS)コンポーネントによって無視されるため、互換性を考慮して採用されました。古いOSで動作するプログラムは引き続きファイルの短いファイル名にアクセスできますが、LFNに対応した新しいOSやプログラムは長いファイル名を使用できます。
Windows 95という形でDOSベースのオペレーティングシステムにLFNサポートが初めて導入されたとき、古いプログラムにいくつかの問題が発生しました。例えば、WindowsがDOSモードのときにセクターレベルのディレクトリ操作を実行するDOSプログラムは、長いファイル名情報を破壊する可能性がありました。そのため、デフォルトでは、このモードではハードディスクへのセクターレベルのアクセスは許可されていませんでした。
通常の DOS を起動すると、VFAT LFN ドライバがインストールされていない限り、長いファイル名は表示されません。Microsoft は、新しいオペレーティングシステム シェルであるWindows Explorerによって廃止されたWindows 3.1x (Windows for Workgroups)ファイル マネージャであるファイル マネージャなど、多くの古いプログラムに LFN サポートを追加しませんでした。Windows NT は、NT 3.1 のリリースから NTFS ファイルシステム上の LFN をサポートし、ファイル マネージャを含むすべてのユーティリティが LFN をサポートするように更新されました。NT 3.5 では、Windows 95 の準備として FAT LFN サポートが追加されました。ただし、Windows 95 バージョンのファイル マネージャは、Windows for Workgroups 3.11 から提供されました。
OS/2はFATファイルシステムのLFNを.LONGNAME拡張属性に格納しますが、これはMicrosoftの実装とは互換性がなく、OS/2規格をサポートするツールでしか認識できません。パス名によるファイルアクセスを提供する多くのAPIは、対応するドライバがないと、新しい長いファイル名を認識できません。
FAT LFN の実装は、より古い、制限の多い命名システムの上に構築されているため、最初の 6 文字が同じファイルを多数作成しようとすると、避けられない問題が発生します。[ 1 ]また、FAT12とFAT16 はハードディスク上に 512 個のルート ディレクトリ エントリの領域しか割り当てないため、ルート ディレクトリにファイルやフォルダを作成すると問題が発生しやすくなります。長いファイル名は複数のディレクトリ エントリを使用するため、この問題はルート ディレクトリに 512 個未満のファイルやフォルダがある場合に発生する可能性があります。[ 2 ]最大長 (512/(1+20)) の長いファイル名は 24 個までしか使用できません。この問題はFAT32ボリュームには存在しません。
長いファイル名システムでは、スペースと英数字以外の文字を含めて最大 255 文字のUCS-2文字[ 3 ] [ 4 ]を許可します ( COMMAND.COMコマンド インタプリタまたはオペレーティングシステム カーネル内で特別な意味を持つ次の文字は除きます: )。これは、それぞれ 13 個の 2 バイトUnicode文字からなる最大 20 個のディレクトリ エントリを連結することによって実現されます。[ 4 ]パス名の最大長は 256 文字で、これにはすべての親ディレクトリとファイル名が含まれます。255 文字の大文字小文字が混在する長いファイル名は、任意のドライブのルート フォルダにあるファイル、またはサブ フォルダのないフォルダに対してのみ可能です。\ / : * ? " < > |
長いファイル名のサポートにより、より長いファイル名とディレクトリ名を使用できますが、DOS ベースのシステムでは、関連付けられた短いファイル名とディレクトリ名から構築された絶対ファイル パスは、 Current Directory Structure (CDS)と呼ばれる内部データ構造で表現されます[ 5 ] [ 6 ] [ 7 ] [ 8 ] 。これにより、(短い) パス名に 66 文字の制限が課せられ、間接的にパスの深さも最大 33レベルに制限されます (ルート ディレクトリを含め、1 文字の名前のみを想定した場合)。 (この設計上の制限は、内部で相対パス表現を使用していた古いバージョンのDR DOS ( 1991 年 11 月の DR DOS 6.0 アップデート以前) には存在しませんでしたが[ 7 ] [ 8 ] [ 9 ]、内部の違いにより、これらのバージョンは既存の LFN アドオン ドライバと互換性がありません。) CDS を持たない DOS ベース以外のオペレーティングシステムでは、このパスの深さの制限は適用されません。
以下は、Windows 95 で使用される VFAT ロングファイル名をサポートするために使用できるドライバの一覧です。DOSLFN などのドライバはほぼすべてのバージョンの DOS にロードできますが、MS-DOS 7.10やDR-DOS 7.02のように LFN 自体をサポートする DOS バージョンで最も効果的に動作し、DOS コマンドでDIRロングファイル名も表示されます。
過去には、小型のリアルモードDOSプログラムもいくつか作成されましたが、その多くは時の流れとともに失われてしまいました。現在も存在する注目すべきプログラム群の一つにLFN Toolsがあります。これはオープンソースで、C++とアセンブリ言語で書かれた7つの便利なLFNコマンドで構成されており、英語とドイツ語のドキュメントが付属しています。Sourceforge.netのLFNTOOLSから入手可能です。
FAT ファミリーのファイルシステムに LFN サポートが実装される前は、さまざまなファイルマネージャが独自の方法で長いファイル記述を添付および維持していました。最初にそうしたものの 1 つは、内部コマンドと対応するファイルを備えた代替コマンドラインプロセッサ4DOSとNDOSです。後者は、各ディレクトリにあるオプションの隠しファイルで、ディレクトリ内のファイル名の行ベースのリストと、テキストによる説明、およびオプションのメタデータエントリ (たとえば、他のプログラムの拡張属性と構成データ) を格納します。[ 10 ]説明は最大 511 文字の長さで、長いファイル名がリストで短いファイル名エイリアスとともにリストされるのとほぼ同じ方法でファイル名とともに表示されます。ファイルのエントリが存在する場合、これらのコマンドラインプロセッサが操作を実行するために使用されている限り、エントリはファイルとともにコピーされ、移動されます。[ 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 ]ベースのアプリケーションなど、他のさまざまなプログラムにも採用されました。DESCRIBEDESCRIPT.IONDIR
1986年以来X68000コンピュータのオペレーティングシステムとして採用されているHuman68Kは、拡張FATファイルシステムをベースとしています。ファイル名には最大18.3文字(FATの8.3文字ではなく)まで使用でき、大文字と小文字(およびShift JISコードの漢字)も区別して使用できます。ファイル名を大文字のみの8.3形式に限定すれば、Human68Kフロッピーディスクは、日本の1232 KiB標準FATフロッピーディスクフォーマット(77シリンダ、2ヘッド、8セクタ、1セクタあたり1024バイト)と完全に互換性があります。このフォーマットは、NEC PC-9800、富士通FMR、FM Townsシリーズのコンピュータで使用されています。
Novell NetWareバージョン 3.x および 4.xボリュームは、追加のNetWare Loadable Module (NLM)をロードすることで、Microsoft 互換の長いファイル名もサポートできます。 [ 13 ]
VFAT互換スキームを実装せずにJavaアプリケーションをサポートするために、 FlexOSベースのIBM 4690 OSバージョン2では、長いファイル名をFATファイルシステムに下位互換性のある方法で格納するための独自の仮想ファイルシステム(VFS)アーキテクチャが導入されました。有効にすると、仮想ファイル名(VFN)は別の論理ドライブ文字で使用可能になり、実際のファイル名(RFN)は元のドライブ文字で使用可能になります。[ 14 ]
MPDOSTIP.ZIP2001年まで維持管理し、当時多くのサイトで配布していた、さらに大規模な資料集の一部です。提供されているリンクは、HTMLに変換された古いバージョンのファイルへのリンクですNWDOSTIP.TXT。)0x23これは、CP(コードページ)、PC(言語コード)、CW(ビット幅)、XS(ページ幅)、YS(ページ長)、XO(印刷時のxオフセット)、 YO(印刷時のyオフセット)、CR(著作権)、URL(ソースリンク)などの拡張属性としてファイルプロパティを保持する、スペース区切りのテキストキー=値ペアのリストに使用されます。また、「%」は、CUI_LIBを使用して擬似環境変数を格納するプログラムで使用され、Digital Research / Novell / CalderaおよびFreeDOS用に予約されています。)0x250xED0xFD4DOS5TIP.TXT(注:提供されているリンクは、コレクションの一部であるHTML変換版のファイルへのリンクですMPDOSTIP.ZIP。)