Golang不使用MD5比较文件内容是否一致
发布时间:2020-12-16 19:17:41 所属栏目:大数据 来源:网络整理
导读: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()) { r
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
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |