我想製作一個基於md5校驗和檢查文件重複的程序。 不能確定我是否失去了一些東西或者不是,但這個函數讀取的XCode安裝的應用程序(它有一個像8GB)採用拉姆ioutil.ReadFile有更快的選擇嗎?
func search() {
unique := make(map[string]string)
files, err := ioutil.ReadDir(".")
if err != nil {
log.Println(err)
}
for _, file := range files {
fileName := file.Name()
fmt.Println("CHECKING:", fileName)
fi, err := os.Stat(fileName)
if err != nil {
fmt.Println(err)
continue
}
if fi.Mode().IsRegular() {
data, err := ioutil.ReadFile(fileName)
if err != nil {
fmt.Println(err)
continue
}
sum := md5.Sum(data)
hexDigest := hex.EncodeToString(sum[:])
if _, ok := unique[hexDigest]; ok == false {
unique[hexDigest] = fileName
} else {
fmt.Println("DUPLICATE:", fileName)
}
}
}
}
的16GB按我調試的問題出在文件讀取 是有更好的方法來做到這一點? 謝謝
嘗試'md5.New',結合'io.Copy'。看看[示例](https://golang.org/pkg/crypto/md5/#example_New_file)。 – putu