标签: Golang, Go

已有 3 条评论

  1. 浩子 浩子

    想简单去重一下拍的图片的,找了一下就看到博主这篇(只处理当前目录)了,结果还是自己动手了,如下:(两个Func都是直接Copy网上的)

    func GetAllFile(dirpath string) ([]string, error) {
    result := []string{}
    fis, err := ioutil.ReadDir(dirpath)
    if err != nil {
    return result, err
    }
    for _, fi := range fis {
    fullname := dirpath + "/" + fi.Name()
    if fi.IsDir() {
    temp, err := GetAllFile(fullname)
    if err != nil {
    return result, err
    }
    result = append(result, temp...)
    } else {
    result = append(result, fullname)
    }
    }
    return result, nil
    }

    func Md5Sum(fullname string) (string, error) {
    f, err := os.Open(fullname)
    if err != nil {
    return "", err
    }
    defer f.Close()
    bs, err := ioutil.ReadAll(f)
    if err != nil {
    return "", err
    }
    md5 := fmt.Sprintf("%x", md5.Sum(bs))
    runtime.GC()
    return md5, nil
    }

    func main() {
    md5Map := make(map[string][]string)
    tmp := make(map[string]int)
    dirpath := "H:/JPG/"
    list, _ := GetAllFile(dirpath)
    for _, v := range list {
    md5, _ := Md5Sum(v)
    if _, ok := md5Map[md5]; ok {
    tmp[md5]++
    }
    md5Map[md5] = append(md5Map[md5], v)
    }
    for k, v := range tmp {
    fmt.Println(md5Map[k], v)
    }
    }

  2. 刘栋19950828 刘栋19950828

    不错很好的思路,加油啊,争取用一个更省内存的方法。我的视频一个一个都太大了,计算特别慢,不过有现成可用的工具,我没什么好抱怨的,博主请继续向前奔跑下去吧,拜托了。

    1. 谢谢支持 : )

      后面有空我可以研究研究你说的

添加新评论