这里的说的文件唯一标识不是文件的名字唯一,而是说用一段字符串来唯一标识出文件的内容。之前也接参考过一套源码 文件上传服务 ,每个上传的文件都是采用MD5计算出文件唯一名称,将文件存储在服务器的一个文件目录下,每次上传新文件,都会先根据文件MD5标识查重。
不论文件大小,MD5都会生成一个固定长度的字符串,例如我这里生成的都是这样的32位字符串 831a3cf0f43dc6b1f12a75fa22ed3bf5 。说实话,这个名字太长,当然存储在后台的磁盘里也没啥关系,但是如果放到URL中,或是文本编辑器中
将上面两个图中的文件标识提出来对比下
第一个文件标识采用md5算法生成,虽然保证了文件的唯一,但是明显过长。
第二个文件标识采用两种算法生成,左侧7位采用CRC32生成,右侧16位应该是md5算法生成后截取的一半。
第二个标识生成的规则给出了一个新的思路,采用md5和crc32两种算法相结合,再进行适当的截取字符串,这样即可以保证标识的唯一性也能有效的减少字符串的长度。
简单来说,crc32算法比md5算法在对同样一个文件进行摘录,耗时短,但同时摘录的信息量也少,所以只能做初筛选。对比多个文件是否重复的时候,首先采用crc32算法,如果两个文件的crc32摘录不一样,那两个文件肯定不重复,但是如果crc32摘录一样,那也不能说明两个文件重复。这时,md5摘录可以做进一步对比,这样对比的结果才是确定的。
在同一个文件夹下的文件,名字都是唯一的,不能重复,但在不同的文件夹下,可以一样的。
完整的文件名是由文件主名和扩展名组成。文件主名由1~8个字符组成,扩展名由1~3个字符组成,主名和扩展名之间由一个小圆点隔开。
文件名是文件存在的标识, *** 作系统根据文件名来对其进行控制和管理,不同的 *** 作系统对文件命名的规则略有不同,即文件名的格式和长度因系统而异。文件名最长可以使用255个字符。文件名中允许使用空格。
扩展资料:
文件的后缀名,是 *** 作系统用来标志文件类型的一种机制。扩展名可以被认为是一个类型的元数据。
举例:“歌词.txt”的文件名中,歌词是主文件名,txt为扩展名(文本、外语全称:Text),表示这个文件被认为是一个纯文本文件。
一些文件系统限制扩展的长度,如个人计算机磁盘 *** 作系统和微软磁盘 *** 作系统(MS-DOS)上的FAT文件系统不允许超过三个字符,IBM的VM/CMS不允许超过八个字符,而其他的比如NTFS“新技术文件系统”则不限制,而Unix *** 作系统的文件系统接受分隔符点作为一个合法有效的字符。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)