Faster CopyFile

This commit is contained in:
Sergey Stepanov 2024-11-28 21:16:31 +03:00
parent 31c670252c
commit 45dba68b15
No known key found for this signature in database
GPG key ID: A56B4929BAA8556B

View file

@ -51,12 +51,31 @@ func GetUserHome() (string, error) {
return me.HomeDir, nil
}
func CopyFile(from string, to string) error {
bytesRead, err := os.ReadFile(from)
func CopyFile(from string, to string) (err error) {
f, err := os.Open(from)
if err != nil {
return err
}
err = os.WriteFile(to, bytesRead, 0755)
defer func() {
if err2 := f.Close(); err2 != nil {
err = errors.Join(err, err2)
}
}()
destFile, err := os.Create(to)
if err != nil {
return err
}
defer func() {
if err2 := destFile.Close(); err != nil {
err = errors.Join(err, err2)
}
}()
n, err := f.WriteTo(destFile)
if n == 0 {
return errors.New("nothing was written")
}
if err != nil {
return err
}