谈谈文件唯一标识的生成

谈谈文件唯一标识的生成,第1张

在我们使用百度云盘上传文件的时候,有的时候一个上百兆甚至更大的文件,秒级上传。这其中一定是云盘识别了文件的唯一标识,所以根本就无需上传,直接提示的上传成功。这不仅在使用云盘服务的时候感受到了急速体验,也极大的节省后台的存储资源。

这里的说的文件唯一标识不是文件的名字唯一,而是说用一段字符串来唯一标识出文件的内容。之前也接参考过一套源码 文件上传服务 ,每个上传的文件都是采用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 *** 作系统的文件系统接受分隔符点作为一个合法有效的字符。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11816516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存