档案名称

文件名是一注明电脑上每一档案的特别字串。在不同的作业系统中,对档案名称在长度及可允许使用的字元上可能作出限制。档案中的“通用资源标志符 - 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 驱动会检测到这一行为并且警告。

参考资料

参见