如何确定文件的唯一性

如何确定文件的唯一性,第1张

可以通过文件名称及文件大小来确定。

电脑中,文件的名称具有唯一性。只要设定好名称,是不可能重复的。例如:新建一个文档,取名叫“文稿”,如果想再新建一个同名文件,会被系统提示“已包含同名文件”

但这只能证明名型念称而已,且再同一个文件夹中,适用此条件,换个文件夹还是可以使用同一名称,所以,还有一种方式,就是看文件的大小。贺租厅

新禅隐建一个Word文档,里面有1000字,和1万字,文件大小也是绝对不一样的。

最后,可以通过查找文件的方式,输入文件名称来寻找同名文件及其所在的目录。

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

这里的说的文件唯一标识不是文件的名字唯一,而是说用一段字符串来唯一标识出文件的内容。之前也接参考过一套源码 文件上传服务 ,每个上传的文件都是采用MD5计算出文件唯一名称,将文件存储在服务器的一个文件目录下,每次上传新文件,都会先根据文件MD5标识查重。

不论文件大小,MD5都会生成一个固稿粗定长度的字符串,例如我这里生成的都是这样的32位字符串 831a3cf0f43dc6b1f12a75fa22ed3bf5 。说实话,这个名字太长,当然存储在后台的磁盘里也没啥关系,但是如果放到URL中,或是文本编辑器中

将上面两个图中的文件标识提出来对比下

第一个文件标识采用md5算法生成,虽然保证了文件的唯一,但是明显过长。

第二个文件标识采用两种算法生成,左侧7位采用CRC32生成,右侧16位应该是md5算法生成后截取的一半。

第二个标识生成的规则给出了一个新的思路,采用md5和crc32两种算法相结合,再进行适当的截取字符串,这样即可以保证标识的唯一性也能有效的减少字符串的长度。

简单来说,crc32算法比md5算法在对同样一个文件进行摘录,耗时短,但同时摘录的信息量也少,所以只能做初筛选。对比多个文件是含敬兄否重复的时候,首先采用crc32算法,如果两个文件的crc32摘录不一样,那两个文件肯定不重复,但是如果crc32摘录一样,那也不能说明两个文件重复。这时,md5摘录可以做进一步对比,这样对比的结果才是确定的。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存