FileMd5.go 472 B

123456789101112131415161718192021222324252627282930
  1. package util
  2. import (
  3. "crypto/md5"
  4. "encoding/hex"
  5. "io"
  6. "os"
  7. )
  8. type MD5 struct {
  9. }
  10. func (md *MD5) FileMD5(filename string) (string, int64, error) {
  11. file, err := os.Open(filename)
  12. if err != nil {
  13. return "", 0, err
  14. }
  15. defer file.Close()
  16. var len int64 = 0
  17. md5 := md5.New()
  18. if len, err = io.Copy(md5, file); err != nil {
  19. return "", 0, err
  20. }
  21. md5Str := hex.EncodeToString(md5.Sum(nil))
  22. return md5Str, len, nil
  23. }
  24. func NewMD5CheckSum() *MD5 {
  25. return &MD5{}
  26. }