当前位置: 代码迷 >> VB Dotnet >> 用什么步骤比较两个文件是否相同
  详细解决方案

用什么步骤比较两个文件是否相同

热度:143   发布时间:2016-04-25 02:20:12.0
用什么方法比较两个文件是否相同?
想要做个同步的小软件,现在就是没弄明白到底怎么比较两个文件是否相同,特别是文件名不一样的,比较大小和日期不靠谱,读取整个文件算MD5的话又太低性能了,实在是想不出来该怎么办了,求大神给个方法,不需要代码,只要告诉我用什么方法就行~一直好奇那些个网盘是怎么判定文件是否相同的.
------解决方案--------------------
网盘就是根据最后修改时间来同步的。有些网盘极速上传是根据md5值来操作的。不过根据md5值无法判断怎么同步。只能判断两个文件是否一样。
------解决方案--------------------
没有办法在不遍历整个文件一次的情况下判断文件是否相同。

但是如果我们的程序可以监控文件的读写,那么只要在程序启动前完整判断一次就可以了。
------解决方案--------------------
引用:
想要做个同步的小软件,现在就是没弄明白到底怎么比较两个文件是否相同,特别是文件名不一样的,比较大小和日期不靠谱,读取整个文件算MD5的话又太低性能了,实在是想不出来该怎么办了,求大神给个方法,不需要代码,只要告诉我用什么方法就行~一直好奇那些个网盘是怎么判定文件是否相同的.

什么文件啊?
加个标记不就完事了么,每个文件更新的时候在文件内部或者某些地方定义一个版本号,如果版本号一致就相同不一致就不同。

------解决方案--------------------
文件头,文件尾+随机N个点的文件流,如果都相等,就可以认为是同一个文件了
------解决方案--------------------
楼上各位已经给了你答案,我总结一下。

如果是普通应用,MD5应该够了,但速度如果是大文件,的确快不起来。

网盘我没开发过,但估算了一下,如果是上传后进行MD5对比,明显是比较弱智的解决方案,它肯定是在上传时就已经在产生MD5,上传是分段的,正好利用这段时间来生成文件流,这样才效率最大化。或是以什么形式保存在内存中,这样最后生成MD5也非常快,但肯定一点,绝对不是上传完成后去读硬盘的文件再生成MD5。
  相关解决方案