modelRT/util/copy.go

36 lines
822 B
Go

// Package util provide some utility functions
package util
import (
"fmt"
"io"
"os"
)
// CopyFile define func of copies a file from src to dst.
// If the destination file exists, it will be overwritten.
func CopyFile(src, dst string) error {
sourceFile, err := os.Open(src)
if err != nil {
return fmt.Errorf("failed to open source file %s: %w", src, err)
}
defer sourceFile.Close()
destFile, err := os.Create(dst)
if err != nil {
return fmt.Errorf("failed to create destination file %s: %w", dst, err)
}
defer destFile.Close()
_, err = io.Copy(destFile, sourceFile)
if err != nil {
return fmt.Errorf("failed to copy file contents from %s to %s: %w", src, dst, err)
}
err = destFile.Sync()
if err != nil {
return fmt.Errorf("failed to sync destination file %s: %w", dst, err)
}
return nil
}