文件名(FILE NAME)
1.文件名发展历史
1962年 为了兼容时分系统,便引入了文件的概念,与此同时,作为区分文件拓展名的点(dot),也几乎同时出现。
传统的文件系统中,文件名只允许数字和字母,但是随着时间,允许加入的符号也变多了,这就影响了文件从一个系统到另一个系统的兼容性问题。
1985年RFC 官方就指定,为了识别某个文件,必须将路径名定义成字符串加到文件系统当中。
1995年前,因8.3FILENAME (SFN,Short File Name)只提供8位短型文件名,因此在1995年提出了一种LongFile Name 文件系统(VFAT, Virtual File Allocate Table)
2.文件名的引用
文件的引用包括:绝对引用,以及相对的引用。
绝对的引用:涵盖系统所有目录。
相对引用:则只会引用当前的工作路径中的文件,这种相对引用的优点使得不同的程序可以引用不同的文件。
这种相对与绝对的路径构成了一系列的文件名。
3.同一文件的文件名个数
在类Unix文件系统中,允许一个文件包含多个文件名。但在传统的unix系统中,文件名跟文件的inod或者先关程序是硬连接的(理解为一对一的连接过程)。
多文件名(可理解为原文件名的别名)应用举例,以VFAT为基础的LFNs允许文件的多个文件名
如将"long file name.???"改写成"longfi~1.???",以此缩短了文件名长度从而使文件可以兼容到早些年8.3filename(SFN,Short File Name)的文件系统中的应用程序当中。
4.文件名字符长度
不同的文件系统支持不同长度的文件名。而受限的文件名长度,主要是跟文件系统分配的文件名存储空间大小有关,因此并不是越大的存储空间越好,因为在增加存储空间的同时,会引起兼容性问题以及意味着更多的空间将被占用。
5.文件名的扩展名
文件名被分为文件基础名跟文件的扩展名。文件的扩展名用于应用程序的识别,而同一个应用程序生成的多个文件,其扩展名是相同的。
6.文件名编码的通用性
因为文件在系统中的存储、应用程序中的调用、网络中的传输、数据的压缩存档、文件的配置等等都会根据文件名来进行操作,因此文件名的编码通用性极其重要。
传统的文件名,允许在文件系统安全的情况下可以起任意的文件名,但是当这本地文件出现在其他的系统中时,由于系统差异(编码方式的差异),这可能就将出现一些互操作性问题。
为了解决文件名编码通用性的问题目前提出的解决办法有:
1. 引入了Unicode的概念(统一了编码方式,目前最普遍)
2. 使得文件名的代码转换透明化
3. 存储非标准的文件名
4. 给予文件名不同的权重,以此避免相同权重文件名的文件出现在相同的目录当中。
7.独一性
同一个目录下,每个文件的文件名必须是独一无二的。不同路径下,可能有相同文件名的文件存在。
8.字母大小写问题
在不同的文件系统当中,对文件名字母的大小写处理可能也存在差异。
如FAT文件系统,不区分字母格式大小写,Unix系统则区别文件名字母的大小写。
9.保留的字符和保留的文件名.
不同的文件系统对应保留的文件名都不同。
在Unicode成为行业标准前,有的文件系统只支持其应用场景下的字符文件名,而另一部分文件系统,除了支持Unicode所规定的字符,还支持其他一些额外的符号文件名。