跳至內容

長檔名

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

長檔名,也指長檔名支援。在舊版本的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英語Joliet (file system)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] 而且,在根目錄中建立檔案或資料夾比在其他目錄更可能遇上問題,因為FAT12FAT16只為硬碟的512個根目錄條目分配空間。由於長檔名使用了不止一個目錄條目,在根目錄中還沒有512個檔案或資料夾的情況下,就可能已經碰上這個問題。[2]如果所有長檔名都採用合法的上限長度,那麼根目錄空間只足夠儲存24個長檔名,因 (512/(1+20))=24(向下取整)。這個問題在FAT32卷中不存在。

長檔名系統允許的最大長度為255個UCS-2字元[3][4],包括空格和非字母或數字的字元(不包括以下字元,它們在COMMAND.COM命令直譯器或作業系統內核中有特殊含義。\ / : * ? " < > |)。 這是由最多20個目錄項鍊起來實現的,每個目錄項有13個2位元組的Unicode字元。[4]而且這個長檔案必須放在驅動器的根資料夾中。

雖然長檔名系統讓更長的檔案和目錄名變得可能,但在基於DOS的系統下,從相關的短檔案和目錄名等價物構建的絕對檔案路徑仍然在一個稱為當前目錄結構英語Current Directory Structure(CDS)的內部數據結構中表示,[5][6][7][8]它對(短)路徑名施加了66個字元的限制,從而也間接限制了路徑深度,最多為33級(從根目錄算起,並假定只有單字母名稱)。(這個設計限制不存在於舊版本的DR DOS(在1991年11月更新的DR DOS 6.0之前),它仍然在內部採用相對路徑表示。[7][8][9]然而,由於其內部差異,這些版本與現有的長檔名附加驅動不相容。) 沒有當前目錄結構的非DOS作業系統不受這種路徑深度限制。

參考來源

  1. ^ MSDOSFileSystem. CocoaDev. 2005-09-12. (原始內容存檔於2006-10-18). 
  2. ^ Dobiash, Jack "vinDaci" (編). Long Filename Specification 4. Grand Ronde, Oregon, USA. 1998-01-06 [2013-05-22]. (原始內容存檔於2015-10-25). 
  3. ^ Errors Creating Files or Folders in the Root Directory. Microsoft. [2022-08-17]. 120138. (原始內容存檔於2015-01-12). 
  4. ^ 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). 
  5. ^ Brothers, Hardin; Rawson, Tom; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. 4DOS 8.00 online help. 2002-02-27. 
  6. ^ 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 the MPDOSTIP.ZIP collection.) [1]
  7. ^ 7.0 7.1 Davis, Jeremy. FreeCom and 4DOS DESCRIPT.ION files (FreeDOS tech note). FreeDOS. [2016-11-11]. (原始內容存檔於2016-11-11). 
  8. ^ 8.0 8.1 Novell. TID1002030 Windows NT, Long File Names on NetWare. 1999-02-11 [2022-08-17]. (原始內容存檔於2011-06-06). 
  9. ^ 4690 OS Programming Guide Version 5.2 (PDF). IBM. 2007-12-06 [2022-08-17]. IBM document SC30-4137-01. (原始內容 (PDF)存檔於2022-01-25). 

外部連結