以下是使用 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值,直到读取完整个文件。同时,还输出了计算进度,方便用户了解计算的进度。

Golang 文件 MD5 计算效率优化:代码示例及详解

原文地址: https://www.cveoy.top/t/topic/mrKC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录