Golang Go语言中无聊系列[遍历计算文件 md5]

发布于 1周前 作者 itying888 来自 Go语言

https://github.com/haozibi/Tree

顺道问一下golang有什么库可以美化终端输出!

用 Go 写了个遍历目录并计算各个文件 md5 的程序,遍历了一下 C:\Windows



Golang Go语言中无聊系列[遍历计算文件 md5]

更多关于Golang Go语言中无聊系列[遍历计算文件 md5]的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

go 计算 md5 其实可以往深处挖的 https://segmentfault.com/a/1190000006670880

更多关于Golang Go语言中无聊系列[遍历计算文件 md5]的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


非常感谢,正对程序运行速度不满意~

然而 md5sum 是 I/O 密集应用,并发并没有什么卵用

在Go语言中,遍历计算文件的MD5值是一个常见的任务,通常用于验证文件的完整性或检测文件内容的变化。以下是一个简短的示例代码,展示了如何使用Go语言遍历目录并计算每个文件的MD5值。

首先,需要导入必要的包:

import (
    "crypto/md5"
    "encoding/hex"
    "fmt"
    "io"
    "log"
    "os"
    "path/filepath"
)

然后,可以定义一个函数来遍历目录并计算MD5值:

func calculateMD5(filePath string) (string, error) {
    file, err := os.Open(filePath)
    if err != nil {
        return "", err
    }
    defer file.Close()

    hash := md5.New()
    if _, err := io.Copy(hash, file); err != nil {
        return "", err
    }

    return hex.EncodeToString(hash.Sum(nil)), nil
}

func main() {
    root := "./your/directory/path"
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if !info.IsDir() {
            md5Value, err := calculateMD5(path)
            if err != nil {
                log.Println(err)
                return err
            }
            fmt.Printf("File: %s, MD5: %s\n", path, md5Value)
        }
        return nil
    })
    if err != nil {
        log.Fatal(err)
    }
}

这个示例代码会遍历指定目录(root),对每个文件计算MD5值并打印出来。注意处理错误和确保文件在读取后正确关闭。

回到顶部