Golang Go语言中无聊系列[遍历计算文件 md5]
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值并打印出来。注意处理错误和确保文件在读取后正确关闭。