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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值