PackageManager just because
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
702 B

  1. package Filesystem
  2. import (
  3. "io/fs"
  4. "io/ioutil"
  5. "os"
  6. "path/filepath"
  7. )
  8. func CopyFile(src, dest string) error {
  9. var (
  10. input []byte
  11. fileInfo fs.FileInfo
  12. srcBasePath string
  13. destBasePath string
  14. err error
  15. )
  16. srcBasePath = filepath.Dir(src)
  17. destBasePath = filepath.Dir(dest)
  18. fileInfo, err = os.Stat(srcBasePath)
  19. if err != nil {
  20. return err
  21. }
  22. err = os.MkdirAll(destBasePath, fileInfo.Mode())
  23. if err != nil {
  24. return err
  25. }
  26. fileInfo, err = os.Stat(src)
  27. if err != nil {
  28. return err
  29. }
  30. input, err = ioutil.ReadFile(src)
  31. if err != nil {
  32. return err
  33. }
  34. err = ioutil.WriteFile(dest, input, fileInfo.Mode())
  35. if err != nil {
  36. return err
  37. }
  38. return nil
  39. }