長いファイル名

長いファイル名（、LFN）のサポートは、DOSで使用される8.3形式ファイル名（短いファイル名）命名方式のマイクロソフトによる下位互換性のある拡張である。ロングファイル名、ロングファイルネームとも。長いファイル名は、.jpg, .tif, .htm, .xhtなどの特殊な短縮名ではなく、.jpeg, .tiff, .html, .xhtmlなどの他のオペレーティングシステムで一般的な長いファイル名の拡張子を含む、よりわかりやすくすることができる。この標準は、1994年のWindows NT 3.5で最初に実装されて以来、File Allocation Table (FAT) ファイルシステムと共通である。

古いオペレーティングシステム (OS) との互換性を維持するために、マイクロソフトは、長いファイル名から8.3形式のファイル名を生成し（例えば Microsoft.txtからMICROS~1.TXT）、それをファイルに関連付ける方法を考案した。

 互換性の問題 
マイクロソフトは、FATファイルシステムにLFNのサポートを実装し、長い名前を格納するためにボリュームラベルタイプの隠しディレクトリエントリを使用している。この方式はVFATと呼ばれ、ボリュームラベルは、通常、プログラムやオペレーティングシステム（OS）コンポーネントによって無視されるため、互換性を保つために選択された。古いOS上で動作するプログラムは、引き続き短いファイル名でアクセスでき、新しいLFN対応のOSやプログラムは、長い名前を使用することができる。

LFNサポートがWindows 95の形でDOSベースのオペレーティングシステムに初めて導入されたとき、古いプログラムはいくつかの問題を引き起こした。たとえば、WindowsがDOSモードの時にセクタレベルのディレクトリ操作を行うDOSプログラムは、長いファイル名情報を破壊する可能性があるため、デフォルトでは、このモードでハードディスクへのセクタレベルのアクセスは禁止されていた。

プレーンDOSで起動すると、VFAT LFNドライバがインストールされていない限り、長いファイル名は表示されない。マイクロソフトは、Windows 3.1x（Windows for Workgroups）のファイル管理ソフトであるFile Manager（新しいオペレーティングシステムのシェルであるWindows Explorerによって廃止された）を含む、古いプログラムの多くでLFNをサポートしなかった。Windows NTはNT 3.1のリリース以降のNTFSファイルシステムでLFNをサポートし、File Managerを含むすべてのユーティリティはLFNをサポートするように更新された。NT 3.5ではWindows 95の準備としてFAT LFNのサポートが追加された。ただし、File ManagerのWindows 95バージョンはWindows for Workgroups 3.11から提供された。

OS/2は、FATファイルシステム用のLFNを.LONGNAME拡張属性に格納しているが、これはマイクロソフトの実装と互換性がなく、OS/2の標準をサポートするツールにしか表示されない。パス名によるファイルへのアクセスを提供する多くのAPIは、サポートされているドライバなしでは、新しい長い名前を表示できない。

 制限 
FAT LFNの実装は、より古く、より限定された命名システムの上に構築されているため、最初の6文字が同じファイルをあまりに多数を作成しようとすると、必然的に複雑になる。また、FAT12とFAT16はハードディスク上の512個のルートディレクトリエントリしかスペースを確保していないため、ルートディレクトリにファイルやフォルダを作成する際に問題が発生する可能性が高くなる。長いファイル名は複数のディレクトリエントリを使用するため、この問題はルートディレクトリ内のファイルまたはフォルダが512未満の場合に発生する可能性がある。最大長（512/(1+20)）の24個の長いファイル名用のスペースしかない。この問題はFAT32ボリュームには存在しない。

長いファイル名システムでは、空白と英数字以外の文字を含め、最大長255文字のUCS-2文字が使用できる（ただし、COMMAND.COMコマンドインタプリタやオペレーティングシステムカーネル内で特別な意味を持つ次の文字を除く: \ / : * ? " < > |）。これは、2バイトのUnicode文字をそれぞれ13文字ずつ、最大20個までのディレクトリエントリを連結することで実現される。パス名の最大長は256文字で、これにはすべての親ディレクトリとファイル名を含む。255文字の大文字小文字が混在した長いファイル名は、任意のドライブのルートフォルダにあるファイル、またはサブフォルダを持たないフォルダに対してのみ使用可能である。

 VFAT LFNドライバ 
以下は、Windows 95で使用されているようなVFATロングファイル名のサポートを提供するために使用できるドライバのリストである。DOSLFNのようなドライバはほとんどすべてのバージョンのDOSでロードでき、MS-DOS 7.10のようなLFN自体をサポートしているDOSバージョンで最適に動作するため、DIRなどのDOSコマンドでも長いファイル名を表示できる。
OSドライバ名提供者任意の単純なDOS DOSLFN、LFNDOSサードパーティーDR-DOSLONGNAME含まれるOS/2 VFAT-OS2.IFSサードパーティーWindows NT 4.0 までの NTVDM NTLFNサードパーティー

 その他の実装 
LFNサポートがFATファミリのファイルシステムに実装される前は、さまざまなファイルマネージャが、より長いファイル記述を添付して維持するための独自の方法を提供していた。最初にそうしたのは、内蔵DESCRIBEコマンドと対応するDESCRIPT.IONファイルを持つ代替コマンドラインプロセッサとである。後者は、各ディレクトリ内にあるオプションの隠しファイルで、ディレクトリ内にあるファイル名の行ベースのリストを、それらのテキスト説明とオプションのメタデータエントリ（たとえば、他のプログラムのための拡張属性と設定データ）と共に格納する。説明文は最大511文字までの長さがあり、DIRリストで長いファイル名と短いファイル名の別名並んで表示されるのと同様に、ファイル名に沿って表示される。あるファイルに対するエントリが存在する場合、これらのコマンドラインプロセッサを使用して操作を行う限り、そのエントリはファイルと共にコピーおよび移動される。この方式は、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、FreeCOM、および一部のCUI_LIBベースのアプリケーションプログラムでも採用されている。

1986年以降、シャープX68000コンピュータのオペレーティングシステムであるHuman68Kは、拡張FATファイルシステムに基づいている。ファイル名には最大18.3文字まで使用でき（FATの8.3文字の代わりに）、大文字と小文字（およびシフトJISコードの漢字も含む）を区別して使用できる。大文字のみの8.3形式のファイル名の使用に制限されている場合、Human68Kフロッピーは、日本の1232 KiB標準FATフロッピー形式（77シリンダー、2ヘッド、8セクタ、1024バイト/セクタ）と完全に互換性がある。このフォーマットは、NEC PC-9800、富士通FMRおよびFM Townsシリーズのコンピュータで使用されている。

Novell NetWareバージョン 3.x および 4.x ボリュームは、追加の（NLM）をロードすることで、マイクロソフト互換の長いファイル名もサポートできる。

VFAT互換方式を実装せずにJavaアプリケーションをサポートするために、ベースのバージョン2では、長いファイル名をFATファイルシステムに下位互換性のある方法で保存する独自の仮想ファイルシステム（VFS）アーキテクチャを導入した。これを有効にすると、実際のファイル名（RFN）は元のドライブ文字の下で利用可能であるのに対し、仮想ファイル名（VFN）は別の論理ドライブ文字の下で利用可能になる。

 関連項目 
 TRANS.TBL
 Rock Ridge (ファイルシステム)
 Joliet（ファイルシステム）
 Romeo（ファイルシステム）
 8.3ファイル名
 6.3ファイル名
 ファイル名


 ファイルシステム
 （LFS）

 脚注 

 外部リンク 
 The filesystems howto
 Current version of DOSLFN
 Original Author of DOSLFN
 VFAT OS2 Provides LFN support under OS2

Category:Webarchiveテンプレートのウェイバックリンク
Category:OSのファイルシステム
Category:マイクロソフトのオペレーティングシステム
Category:ファイル (コンピュータ)