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

时间:2022-05-05
本文章向大家介绍Golang不使用MD5比较文件内容是否一致,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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
}