這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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}