長文件名
此條目可參照英語維基百科相應條目來擴充。 (2020年8月15日) |
長文件名,也指長文件名支持。在舊版本的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個字符擴展名。[來源請求]
兼容性問題
微軟在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操作系統不受這種路徑深度限制。
參考來源
- ^ MSDOSFileSystem. CocoaDev. 2005-09-12. (原始內容存檔於2006-10-18).
- ^ Dobiash, Jack "vinDaci" (編). Long Filename Specification 4. Grand Ronde, Oregon, USA. 1998-01-06 [2013-05-22]. (原始內容存檔於2015-10-25).
- ^ Errors Creating Files or Folders in the Root Directory. Microsoft. [2022-08-17]. 120138. (原始內容存檔於2015-01-12).
- ^ 4.0 4.1 Winnick Cluts, Nancy. Making Room for Long Filenames. 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. 4DOS 8.00 online help. 2002-02-27.
- ^ Paul, Matthias R. Hinweise zu JPSofts 4DOS 5.5b/c, 5.51, 5.52a und NDOS. 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.) [1] - ^ 7.0 7.1 Davis, Jeremy. FreeCom and 4DOS DESCRIPT.ION files (FreeDOS tech note). FreeDOS. [2016-11-11]. (原始內容存檔於2016-11-11).
- ^ 8.0 8.1 Novell. TID1002030 Windows NT, Long File Names on NetWare. 1999-02-11 [2022-08-17]. (原始內容存檔於2011-06-06).
- ^ 4690 OS Programming Guide Version 5.2 (PDF). IBM. 2007-12-06 [2022-08-17]. IBM document SC30-4137-01. (原始內容 (PDF)存檔於2022-01-25).