前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang不使用MD5比较文件内容是否一致

Golang不使用MD5比较文件内容是否一致

作者头像
李海彬
发布2018-03-26 12:37:39
1.2K0
发布2018-03-26 12:37:39
举报
文章被收录于专栏:Golang语言社区Golang语言社区
代码语言:javascript
复制
func compare(spath, dpath string) bool {
    sinfo, err := os.Lstat(spath)    

      if err != nil {             

       return false

    }
    dinfo, err := os.Lstat(dpath)    

    if err != nil {        

      return false
    }    

    if sinfo.Size() != dinfo.Size() || !sinfo.ModTime().Equal(dinfo.ModTime())     {       

        return false
    }    

     return comparefile(spath, dpath)
}



func comparefile(spath, dpath string) bool {
    sFile, err := os.Open(spath)    

   if err != nil {        

     return false
    }
    dFile, err := os.Open(dpath)    

      if err != nil {        

        return false
    }
    b := comparebyte(sFile, dFile)
    sFile.Close()
    dFile.Close()    

     return b
}



//下面可以代替md5比较.

func comparebyte(sfile *os.File, dfile *os.File) bool {    

       var sbyte []byte = make([]byte, 512)    

       var dbyte []byte = make([]byte, 512)    

       var serr, derr error    

        for {
        _, serr = sfile.Read(sbyte)
        _, derr = dfile.Read(dbyte)        

         if serr != nil || derr != nil {            

             if serr != derr {               

                return false
            }            

         if serr == io.EOF {                

             break
            }
        }        

        if bytes.Equal(sbyte, dbyte) {            

             continue
        }        

          return false
    }    

        return true

}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档