简言
1. 笔者在做一个配置文件自动更新的功能,思路就是给每个配置文件开一个专门的监控协程,每隔30秒重新获取一次配置文件的md5值,如果和上次md5值不同,就重新读取配置
2. 那么重点就来了:获取文件的md5值,go语言官方下已经有了对md5的支持,用着很简单
实验结果如下图:
代码如下:
package main
import (
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"os"
)
// 获取文件的md5码
func getFileMd5(filename string) string {
// 文件全路径名
path := fmt.Sprintf("./%s", filename)
pFile, err := os.Open(path)
if err != nil {
fmt.Errorf("打开文件失败,filename=%v, err=%v", filename, err)
return ""
}
defer pFile.Close()
md5h := md5.New()
io.Copy(md5h, pFile)
return hex.EncodeToString(md5h.Sum(nil))
}
func main() {
// 当前目录的csv配置文件为例
fileName := "mall.csv"
md5Val := getFileMd5(fileName)
fmt.Println("配置文件的md5值", md5Val)
}