Goでファイルをコピーする時、io.Copyを使うとメモリ効率がよいとのこと。
ioutil.ReadFileはファイルの中身を一気に読みんでメモリ上に保持するため、
サイズが大きいファイルだとメモリをがっつり使ってしまう。
func copyFile(from string, to string) error {
r, err := ioutil.ReadFile(from)
if err != nil {
return err
}
return ioutil.WriteFile(to, r, 0666)
}io.Copyを使うとメモリ効率が良い。
func copyFile(from string, to string) error {
r, err := os.Open(from)
if err != nil {
return err
}
defer r.Close()
w, err := os.Create(to)
if err != nil {
return err
}
defer w.Close()
_, err = io.Copy(w, r)
return err
}