長いファイル名
長いファイル名(英: Long filename、LFN)のサポートは、DOSで使用される8.3形式ファイル名(短いファイル名)命名方式のマイクロソフトによる下位互換性のある拡張である。ロングファイル名、ロングファイルネームとも。長いファイル名は、.jpg
, .tif
, .htm
, .xht
などの特殊な短縮名ではなく、.jpeg
, .tiff
, .html
, .xhtml
などの他のオペレーティングシステムで一般的な長いファイル名の拡張子を含む、よりわかりやすくすることができる。この標準は、1994年のWindows NT 3.5で最初に実装されて以来、ファイルアロケーションテーブル(FAT)ファイルシステムと共通である。
古いオペレーティングシステムとの互換性を維持するために、マイクロソフトは、長いファイル名から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文字が同じファイルをあまりに多数を作成しようとすると、必然的に複雑になる[1]。また、FAT12とFAT16はハードディスク上の512個のルートディレクトリエントリしかスペースを確保していないため、ルートディレクトリにファイルやフォルダを作成する際に問題が発生する可能性が高くなる。長いファイル名は複数のディレクトリエントリを使用するため、この問題はルートディレクトリ内のファイルまたはフォルダが512未満の場合に発生する可能性がある[2]。最大長(512/(1+20))の24個の長いファイル名用のスペースしかない。この問題はFAT32ボリュームには存在しない。
長いファイル名システムでは、空白と英数字以外の文字を含め、最大長255文字のUCS-2文字が使用できる[3][4](ただし、COMMAND.COMコマンドインタプリタやオペレーティングシステムカーネル内で特別な意味を持つ次の文字を除く: \ / : * ? " < > |)。これは、2バイトのUnicode文字をそれぞれ13文字ずつ、最大20個までのディレクトリエントリを連結することで実現される[4]。パス名の最大長は256文字で、これにはすべての親ディレクトリとファイル名を含む。255文字の大文字小文字が混在した長いファイル名は、任意のドライブのルートフォルダにあるファイル、またはサブフォルダを持たないフォルダに対してのみ使用可能である。
VFAT LFNドライバ
編集以下は、Windows 95で使用されているようなVFATロングファイル名のサポートを提供するために使用できるドライバのリストである。DOSLFNのようなドライバはほとんどすべてのバージョンのDOSでロードでき、MS-DOS 7.10のようなLFN自体をサポートしているDOSバージョンで最適に動作するため、DIR
などのDOSコマンドでも長いファイル名を表示できる。
OS | ドライバ名 | 提供者 |
---|---|---|
任意の単純なDOS | DOSLFN、LFNDOS | サードパーティー |
DR-DOS | LONGNAME | 含まれる |
OS/2 | VFAT-OS2.IFS | サードパーティー |
Windows NT 4.0 までの NTVDM | NTLFN | サードパーティー |
その他の実装
編集LFNサポートがFATファミリのファイルシステムに実装される前は、さまざまなファイルマネージャが、より長いファイル記述を添付して維持するための独自の方法を提供していた。最初にそうしたのは、内蔵DESCRIBE
コマンドと対応するDESCRIPT.ION
(英語版) ファイルを持つ代替コマンドラインプロセッサ4DOSとNDOSである。後者は、各ディレクトリ内にあるオプションの隠しファイルで、ディレクトリ内にあるファイル名の行ベースのリストを、それらのテキスト説明とオプションのメタデータエントリ(たとえば、他のプログラムのための拡張属性と設定データ)と共に格納する。説明文は最大511文字までの長さがあり、DIR
リストで長いファイル名と短いファイル名の別名並んで表示されるのと同様に、ファイル名に沿って表示される。あるファイルに対するエントリが存在する場合、これらのコマンドラインプロセッサを使用して操作を行う限り、そのエントリはファイルと共にコピーおよび移動される[5]。この方式は、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[6]、および一部のCUI_LIB[7]ベースのアプリケーションプログラムでも採用されている。
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 ボリューム (英語版) は、追加のNetWare Loadable Module(NLM)をロードすることで、マイクロソフト互換の長いファイル名もサポートできる[8]。
VFAT互換方式を実装せずにJavaアプリケーションをサポートするために、FlexOSベースのIBM 4690 OSバージョン2では、長いファイル名をFATファイルシステムに下位互換性のある方法で保存する独自の仮想ファイルシステム(VFS)アーキテクチャを導入した。これを有効にすると、実際のファイル名(RFN)は元のドライブ文字の下で利用可能であるのに対し、仮想ファイル名(VFN)は別の論理ドライブ文字の下で利用可能になる[9]。
参照項目
編集脚注
編集
- ^ CocoaDev: MSDOSFileSystem Archived 2006-10-18 at the Wayback Machine.
- ^ Errors Creating Files or Folders in the Root Directory
- ^ “Making Room for Long Filenames”. 23 April 2008時点のオリジナルよりアーカイブ。19 April 2007閲覧。
- ^ a b “Long Filename Specification”. 25 October 2015時点のオリジナルよりアーカイブ。22 May 2013閲覧。
- ^ 4DOS 8.00 online help. (2002-02-27)
- ^ “FreeCom and 4DOS DESCRIPT.ION files”. FreeDOS. 2016年11月11日時点のオリジナルよりアーカイブ。2016年11月11日閲覧。
- ^ “Hinweise zu JPSofts 4DOS 5.5b/c, 5.51, 5.52a und NDOS” (ドイツ語). MPDOSTIP (1997年5月1日). 2016年11月4日時点のオリジナルよりアーカイブ。2015年5月8日閲覧。 (NB. The provided link points to a HTML-converted version of the
4DOS5TIP.TXT
file, which is part of theMPDOSTIP.ZIP
collection.) [1] - ^ Novell (1999年2月11日). “TID1002030 Windows NT, Long File Names on NetWare”. 2021年1月16日閲覧。
- ^ 4690 OS Programming Guide Version 5.2. IBM. (2007-12-06). IBM document SC30-4137-01