github.com/qjfoidnh/BaiduPCS-Go@v0.0.0-20231011165705-caa18a3765f3/pcsutil/checksum/file.go (about)

     1  package checksum
     2  
     3  import (
     4  	"bytes"
     5  	"github.com/qjfoidnh/BaiduPCS-Go/baidupcs"
     6  	"path/filepath"
     7  )
     8  
     9  // EqualLengthMD5 检测md5和大小是否相同
    10  func (lfm *LocalFileMeta) EqualLengthMD5(m *LocalFileMeta) bool {
    11  	if lfm.Length != m.Length {
    12  		return false
    13  	}
    14  	if bytes.Compare(lfm.MD5, m.MD5) != 0 {
    15  		return false
    16  	}
    17  	return true
    18  }
    19  
    20  // CompleteAbsPath 补齐绝对路径
    21  func (lfm *LocalFileMeta) CompleteAbsPath() {
    22  	if filepath.IsAbs(lfm.Path) {
    23  		return
    24  	}
    25  
    26  	absPath, err := filepath.Abs(lfm.Path)
    27  	if err != nil {
    28  		return
    29  	}
    30  
    31  	lfm.Path = absPath
    32  }
    33  
    34  // GetFileSum 获取文件的大小, md5, 前256KB切片的 md5, crc32
    35  func GetFileSum(localPath string, flag int) (lfc *LocalFileChecksum, err error) {
    36  	lfc = NewLocalFileChecksum(localPath, int(baidupcs.SliceMD5Size))
    37  	defer lfc.Close()
    38  
    39  	err = lfc.OpenPath()
    40  	if err != nil {
    41  		return nil, err
    42  	}
    43  
    44  	err = lfc.Sum(flag)
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  	return lfc, nil
    49  }