长文件名
长文件名,也指长文件名支持。在旧版本的DOS操作系统下,因为文件名稱有8.3格式的限制,凡文件主檔名超过8字节或扩展名超过3字节的文件名,都被称为“长文件名”,在Windows下正常的文件名置換於DOS或命令提示字元環境下則可能無法完整显示,如“Program files”資料夾可能會顯示成其对应的8.3文件名“PROGRA~1”。不过在MS-DOS 7以后的版本中可以通过加载类似DOSLFN这样的程序使得DIR等命令显示出长文件名。
在微软的Windows NT 3.5出来之后,“长文件名”问题得以解决,现在的Windows XP系统一般可以输入200多个字符作为文件名,或者200个字符扩展名。
目前光盘上使用的长文件名技術有:Joliet、ISO 9660 level 3等。
兼容性问题
微软在FAT文件系统中实现了对长文件名的支持,通过使用隐藏的目录项,其为卷标类型,来存储较长的名称;这种方案被称为VFAT,是为兼容性而选择的,因为卷标通常会被程序和操作系统(OS)组件忽略。在旧的操作系统上运行的程序仍然可以访问文件的短名称,而较新的、知道长文件名的操作系统和程序可以使用较长的名称。
当长文件名支持在Windows 95中被引入基于DOS的操作系统时,它给老的程序带来了一些问题。例如,当Windows处于DOS模式时,DOS程序执行扇区级目录操作可能会破坏长文件名信息。因此,默认情况下,在这种模式下不允许对硬盘进行扇区级访问。
在启动到普通DOS时,除非安装了VFAT长文件名驱动程序,否则长文件名是不可见的。微软没有将长文件名支持添加到许多旧程序中,包括文件管理器,Windows 3.1x(Windows for Workgroups)文件管理器被新的操作系统外壳Windows文件资源管理器淘汰了。从NT 3.1开始,Windows NT支持NTFS文件系统的长文件名,它的所有工具,包括文件管理器,都被更新以支持LFN。NT 3.5增加了对FAT长文件名的支持,以便为Windows 95做准备。然而,Windows 95版本的文件管理器来自Windows for Workgroups 3.11。
OS/2将FAT文件系统的LFN存储在.LONGNAME
扩展文件属性中,与微软的实现不兼容,只有支持OS/2标准的工具才能看到。许多通过路径名访问文件的API在没有支持驱动程序的情况下无法看到新的、更长的名称。
限制
由于FAT长文件名的实现是建立在一个更老的、更有限的命名系统之上的,因此不可避免地会有一些复杂的问题,例如當试图创建太多的前六个字母相同的文件。[1] 而且,在根目录中创建文件或文件夹比在其他目錄更可能遇上問題,因为FAT12和FAT16只为硬盘的512个根目录条目分配空间。由于长文件名使用了不止一个目录条目,在根目录中還沒有512个文件或文件夹的情况下,就可能已經碰上这个问题。[2]如果所有长文件名都採用合法的上限長度,那麼根目錄空间只足夠儲存24个长文件名,因 (512/(1+20))=24(向下取整)。这个问题在FAT32卷中不存在。
长文件名系统允许的最大长度为255个UCS-2字符[3][4],包括空格和非字母或数字的字符(不包括以下字符,它们在COMMAND.COM命令解释器或操作系统内核中有特殊含义。\ / : * ? " < > |)。 这是由最多20个目录项链起来实现的,每个目录项有13个2字节的Unicode字符。[4]而且這個长文件必須放在驱动器的根文件夹中。
虽然长文件名系统讓更长的文件和目录名變得可能,但在基于DOS的系统下,从相关的短文件和目录名等价物构建的绝对文件路径仍然在一个称为当前目录结构(CDS)的内部数据结构中表示,[5][6][7][8]它对(短)路径名施加了66个字符的限制,从而也间接限制了路径深度,最多为33级(从根目录算起,并假定只有单字母名称)。(这个设计限制不存在于旧版本的DR DOS(在1991年11月更新的DR DOS 6.0之前),它仍然在内部采用相对路径表示。[7][8][9]然而,由于其内部差异,这些版本与现有的长文件名附加驱动不兼容。) 没有当前目录结构的非DOS操作系统不受这种路径深度限制。
参考来源
- . CocoaDev. 2005-09-12. (原始内容存档于2006-10-18).
- Dobiash, Jack "vinDaci" (编). 4. Grand Ronde, Oregon, USA. 1998-01-06 [2013-05-22]. (原始内容存档于2015-10-25).
- . Microsoft. [2022-08-17]. 120138. (原始内容存档于2015-01-12).
- Winnick Cluts, Nancy. . Files and I/0 Technical Articles. Microsoft Corporation. August 1996 [2007-04-19]. 810456. (原始内容存档于2008-04-23).
- Brothers, Hardin; Rawson, Tom; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. . 2002-02-27.
- Paul, Matthias R. . MPDOSTIP. 1997-05-01 [2015-05-08]. (原始内容存档于2016-11-04) (德语). (NB. The provided link points to a HTML-converted version of the
4DOS5TIP.TXT
file, which is part of theMPDOSTIP.ZIP
collection.) - Davis, Jeremy. (FreeDOS tech note). FreeDOS. [2016-11-11]. (原始内容存档于2016-11-11).
- Novell. . 1999-02-11 [2022-08-17]. (原始内容存档于2011-06-06).
- (PDF). IBM. 2007-12-06 [2022-08-17]. IBM document SC30-4137-01. (原始内容 (PDF)存档于2022-01-25).