Skip to content

Commit 45dba68

Browse files
committed
Faster CopyFile
1 parent 31c6702 commit 45dba68

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

pkg/os/os.go

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,31 @@ func GetUserHome() (string, error) {
5151
return me.HomeDir, nil
5252
}
5353

54-
func CopyFile(from string, to string) error {
55-
bytesRead, err := os.ReadFile(from)
54+
func CopyFile(from string, to string) (err error) {
55+
f, err := os.Open(from)
5656
if err != nil {
5757
return err
5858
}
59-
err = os.WriteFile(to, bytesRead, 0755)
59+
defer func() {
60+
if err2 := f.Close(); err2 != nil {
61+
err = errors.Join(err, err2)
62+
}
63+
}()
64+
65+
destFile, err := os.Create(to)
66+
if err != nil {
67+
return err
68+
}
69+
defer func() {
70+
if err2 := destFile.Close(); err != nil {
71+
err = errors.Join(err, err2)
72+
}
73+
}()
74+
75+
n, err := f.WriteTo(destFile)
76+
if n == 0 {
77+
return errors.New("nothing was written")
78+
}
6079
if err != nil {
6180
return err
6281
}

0 commit comments

Comments
 (0)