Golang 文件 MD5 计算效率优化:代码示例及详解
以下是使用 Go 语言计算文件 MD5 的优化代码:
package main
import (
"crypto/md5"
"fmt"
"io"
"os"
)
func main() {
filename := 'test.txt'
// 打开文件
file, err := os.Open(filename)
if err != nil {
panic(err)
}
defer file.Close()
// 获取文件信息
fileInfo, err := file.Stat()
if err != nil {
panic(err)
}
// 计算文件MD5
hash := md5.New()
buf := make([]byte, 4096)
var totalRead int64
for {
// 读取文件数据
n, err := file.Read(buf)
if err != nil && err != io.EOF {
panic(err)
}
if n == 0 {
break
}
// 更新MD5值
hash.Write(buf[:n])
totalRead += int64(n)
// 打印进度
percent := float64(totalRead) / float64(fileInfo.Size()) * 100
fmt.Printf("\r%.2f%%", percent)
}
// 输出MD5值
fmt.Printf("\nMD5: %x\n", hash.Sum(nil))
}
这里的优化主要是在读取文件数据时,使用一个固定大小的缓冲区,在循环中不断读取数据并更新MD5值,直到读取完整个文件。同时,还输出了计算进度,方便用户了解计算的进度。
原文地址: https://www.cveoy.top/t/topic/mrKC 著作权归作者所有。请勿转载和采集!