長いファイル名

長いファイル名(Long filename、LFN)とは、マイクロソフトがDOSで使用されていた8.3形式ファイル名(短いファイル名)を拡張したものです。これにより、`.jpg`、`.tif`といった短い拡張子だけでなく、`.jpeg`、`.tiff`、`.html`、`.xhtml`のような、他のオペレーティングシステムで一般的な長い拡張子を持つ、より分かりやすいファイル名を使用できるようになりました。この標準は1994年のWindows NT 3.5で初めて実装されて以来、FATファイルシステムで広く採用されています。

下位互換性の維持



古いオペレーティングシステムとの互換性を維持するために、マイクロソフトは長いファイル名から8.3形式ファイル名を生成し(例:`Microsoft.txt`から`MICROS~1.TXT`)、両者を関連付ける方法を考案しました。この仕組みにより、古いシステムでもファイルにアクセス可能でありながら、新しいシステムでは長いファイル名を利用できるという利便性を実現しています。

VFAT方式と互換性の問題



マイクロソフトは、FATファイルシステムにLFNを導入する際、長いファイル名を格納するために、ボリュームラベルタイプの隠しディレクトリエントリを使用しました。この方式はVFATと呼ばれ、ボリュームラベルが通常プログラムやOSによって無視されることから、互換性維持に最適でした。

しかし、Windows 95でLFNがDOSベースのOSに初めて導入された際、古いプログラムで問題が発生しました。例えば、WindowsがDOSモードの時にセクタレベルのディレクトリ操作を行うDOSプログラムは、長いファイル名情報を破壊する可能性があったため、このモードでのハードディスクへのセクタレベルアクセスはデフォルトで禁止されました。

また、プレーンDOSで起動した場合、VFAT LFNドライバがインストールされていないと長いファイル名は表示されません。マイクロソフトは、Windows 3.1xのファイル管理ソフトであるファイルマネージャでは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`拡張属性に格納していましたが、これはマイクロソフトの実装とは互換性がなく、OS/2標準をサポートするツールでしか表示されませんでした。パス名でファイルにアクセスする多くのAPIは、サポートされているドライバなしでは新しい長い名前を表示できませんでした。

実装上の制限



FAT LFNの実装は、より古く制限された命名システムの上に構築されているため、ファイル名の最初の6文字が同じファイルを多く作成しようとすると複雑になります。また、FAT12とFAT16ではルートディレクトリのエントリ数が限られているため、長いファイル名が複数のエントリを使用すると、ルートディレクトリでのファイルやフォルダ作成に問題が生じる可能性があります。例えば、最大長の長いファイル名は24個程度しかルートディレクトリに作成できませんでした。この問題はFAT32ボリュームでは解消されています。

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

VFAT LFNドライバ



Windows 95のようなVFATロングファイル名のサポートを提供するために、様々なドライバが利用可能です。`DOSLFN`のようなドライバは、ほとんどのDOSバージョンで利用でき、特にMS-DOS 7.10のようなLFNをサポートするDOSバージョンでは、`DIR`などのDOSコマンドでも長いファイル名を表示できます。

その他の実装



FATファイルシステムにLFNサポートが実装される以前には、様々なファイルマネージャが長いファイル記述を維持するための独自の方法を提供していました。`4DOS`や`NDOS`は、内蔵の`DESCRIBE`コマンドと`DESCRIPT.ION`ファイルを使用し、ファイル名と共に説明文を保存していました。この方式は後継の`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`などのソフトウェアでも採用されています。

シャープX68000コンピュータのオペレーティングシステムであるHuman68Kは、拡張FATファイルシステムを採用しており、ファイル名に最大18.3文字まで使用でき、大文字と小文字を区別して使用できます。このシステムは、日本の1232 KiB標準FATフロッピー形式とも互換性があります。

Novell NetWare 3.xおよび4.xボリュームは、NetWare Loadable Module (NLM) を追加することで、マイクロソフト互換の長いファイル名をサポートできます。

FlexOSベースのIBM 4690 OSバージョン2では、Javaアプリケーションをサポートするために、VFAT互換方式を実装せずに、独自の仮想ファイルシステム(VFS)アーキテクチャを導入しました。これにより、実際のファイル名 (RFN) は元のドライブ文字の下で利用可能で、仮想ファイル名 (VFN) は別の論理ドライブ文字の下で利用可能になります。

関連事項



`TRANS.TBL`
`Rock Ridge (ファイルシステム)`
`Joliet (ファイルシステム)`
`Romeo (ファイルシステム)`
`8.3ファイル名`
`6.3ファイル名`
`ファイル名`
`VFAT特許`
`FATファイルシステム設計`
`ファイルシステム`
`ラージファイルサポート(LFS)`

脚注



[外部リンク]
The filesystems howto
Current version of DOSLFN
Original Author of DOSLFN
VFAT OS2 Provides LFN support under OS2
* 『ロングファイル名』 - コトバンク

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。