相对 python 来说快1/3,用 python 的 Walk 来遍历需要30分钟,go Walk 用17分钟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
func scanFile(rootPath string) map[string]string {
  fileMD5 := make(map[string]string)
  rootPrefix := strings.TrimSuffix(rootPath, "/")
  filepath.Walk(rootPath, func(path string, info os.FileInfo, err error) error {
    // fmt.Println("Processing:", path)
    //这里是文件过滤器
    if strings.HasSuffix(path, ".php") {
      //fmt.Println(path)
      furi := strings.TrimPrefix(path, rootPrefix)
      file, inerr := os.Open(path)
      if inerr == nil {
        md5h := md5.New()
        io.Copy(md5h, file)
        md5v := fmt.Sprintf("%x", md5h.Sum(nil))
        //fmt.Println(furi, md5v)
        fileMD5[furi] = md5v
      }
    }
    return err
  })

  return fileMD5
}

本文网址: https://golangnote.com/topic/97.html 转摘请注明来源