檔案名稱

檔案名稱是一註明電腦上每一檔案的特別字串。在不同的作業系統中,對檔案名稱在長度及可允許使用的字元上可能作出限制。檔案中的「通用資源標誌符 - URI」最少是由四個部份組成的:

  1. 電腦ID (IP地址,網名或LAN電腦名稱。例如: wikipedia.org、207.142.131.206或\\MYCOMPUTER )
  2. 裝置(磁碟、根掛載點、磁碟區。例如: C:,/)
  3. 路徑 (目錄樹的位置:在第一個和最後一個路徑分隔線之間的任何字元)
  4. 檔案名稱

要參照在遠端電腦中的檔案 (即:主機,伺服器) 它的網絡ID必須提供在內。如果它的URI沒有路徑部份,那檔案部份便假設在現時工作的目錄。

在很多的系統中,包括DOS及UNIX,是可以句點(.)方式,將檔案名稱分成兩個部份,包括可含有一個或多個字元的副檔名。這兩個部份包括:

  • 檔案的基本名稱 (即:適當的檔案名稱,主要檔案名稱) 及
  • 檔案的副檔名 (通常是指出與指定格式有關聯的檔案格式MIME類型)

在同一個目錄中,檔案名稱必須是要唯一的。但是,兩個檔案在不同的目錄中,其名稱是可以相同的。在某些的作業系統中,比如UNIX及Macintosh作業系統中,可以容許一個檔案可以多於一個名字,這稱作替身硬連結 (請同時參閱:inode)。

注意:這種連結方式是與Windows捷徑、象徵連結、軟連結或超連結不同的。

保留字元

在部份的作業系統例如Windows中,檔案系統裏的某些字元因為含有特別的意思。因此在這些作業系統中,檔案的名稱不可以包括以下的字元:

  • 任何控制字元 (0-31)
  • / 斜線(SLASH) (使用為路徑分隔線;UNIX中的根目錄符號)
  • | 管道(PIPE)
  • \ 反斜線(BACKSLASH) (使用為路徑分隔線)
  • ? 問號(QUESTIONMARK) (在Windows作業系統中使用為一個萬用字元)
  • " 雙引號(DOUBLE-QUOTATIONMARK) (這使用於標示含有空白字元的檔案名稱)
  • * 星號(STAR) (在Windows作業系統中使用為萬用字元)
  • : 冒號(COLON) (這使用於決定哪一個掛載點 / Windows作業系統中的磁碟)
  • < 小於(LESS THAN)(原先由用戶在主控台輸入的訊息改由文字檔輸入)
  • > 大於(GREATER THAN)(原先輸出至主控台的訊息改輸出至文字檔)
  • . 句點(可允許使用,但最後的句點會被詮釋為副檔名的分隔)

另外,某些檔案名稱亦會保留,不能作為檔案名稱使用。

例如,DOS裝置檔案
CON, PRN, AUX, CLOCK$, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
包含保留字的檔案名稱或檔案結尾,例如 aux.c , file.aux 或 NUL.txt 等在內的檔案名稱應該避免使用。

Unix及類Unix系統一般允許在檔案名中使用任何字元,而僅不可使用ASCII NULL(\0)和斜線(/)字元。

檔案名稱在不同OS中的比較

由於在多數的作業系統中的編碼問題,這不建議使用西歐或空白以外的字元作為檔案名稱。同時在某些作業系統中 (UNIX/UNIX-LIKE) ,大小寫不同的寫法可以有不同的解釋——myFile是跟myfile不同的——這不同於其它的作業系統(Windows)。

以下列出了不同作業系統中檔案名稱的比較。要注意對於其中的不少作業系統,最大長度、編碼、大小寫相異等特性會按照檔案系統的改變而改變。

系統 編碼 大小寫相異 允許字元 保留字元 保留字 最大長度 備註
MS DOS ANSI 否 (FAT DOS 檔案名稱) A-Z,0-9,-,_ 全部,除了已允許的字元 12 ISO-9660, CD檔案格式
Winows 95 (FAT) ANSI[註 1] A-Z,a-z,0-9,-,_ \?*<":>+[] 控制字元 255
Windows (exFAT) UTF-16 \?*<":> 控制字元 255
Windows (NTFS) UTF-16 可選用 任何 \?*<":> 控制字元 aux, con, prn 32,767個Unicode字元,其中每個成分(目錄或檔案名稱)最長255字元 IE 中地址列的最大長度
OS/2 (HPFS) 任何8 bit長度字元 任何8 bit長度字元 \?*<":> 254
Mac OS (HFS) 任何8 bit長度字元 任何8 bit長度字元 : 255 舊版Finder中上限為31字元
Mac OS X (HFS+) 預設 UTF-8,其他同 UNIX。 大小寫保留,是否區分視設定 任何  : (classic Mac OS與Carbon layer macOS)

/ (Unix layer macOS)

255 同 UNIX
UNIX C (ANSI)
LC_ALL 變數和掛載設置
任何 / 256 . 為首的被當作系統檔案(常作為軟件組態的隱藏檔案)
Linux (Ubuntu 12.04, 以 ext4 為主) 預設 UTF-8,其他同 UNIX。 [註 2] 任何 / 視檔案系統,一般為 256 同 UNIX
BSD (FreeBSD 9) 常用 C (ANSI) 或 UTF-8,其他同 UNIX。 任何 / 視檔案系統,一般為 256 同 UNIX

注意:在ISO 9660的檔案系統中,最大的目錄層次為8層,假設檔案最大長度為255個字元,這可知道在這個檔案系統中,URL的最大長度是2040個字元。

註腳

  1. ^ 多語言 Windows 出現後,Windows 仍然習慣把本地頁碼叫做 ANSI,但這些頁碼(如 CP936)不一定是 ANSI 發佈的。
  2. ^ 由於 Linux 之類的類 UNIX 系統區分大小寫的緣故,常有一種惡作劇,即在他人 C 盤目錄下建立多個僅大小寫不同的資料夾,導致 Windows 發生檔案系統錯誤。在這些系統上,有一些 NTFS 和 FAT 驅動會檢測到這一行為並且警告。

參考資料

參見