文件名
文件名是一注明电脑上每一文件的特别字符串。在不同的操作系统中,对文件名在长度及可允许使用的字符上可能作出限制。文件中的“通用资源标志符 - URI”最少是由四个部分组成的:
- 电脑ID (IP地址,网名或LAN电脑名称。例如: wikipedia.org、207.142.131.206或\\MYCOMPUTER )
- 设备(磁盘、根挂载点、卷。例如: C:,/)
- 路径 (目录树的位置:在第一个和最后一个路径分隔线之间的任何字符)
- 文件名
要引用在远程电脑中的文件 (即:主机,服务器) 它的网络ID必须提供在内。如果它的URI没有路径部分,那文件部分便假设在现时工作的目录。
在很多的系统中,包括DOS及UNIX,是可以句点(.)方式,将文件名分成两个部分,包括可含有一个或多个字符的扩展名。这两个部分包括:
在同一个目录中,文件名必须是要唯一的。但是,两个文件在不同的目录中,其名称是可以相同的。在某些的操作系统中,比如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个字符。