file_util.go 945 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package util
  2. import (
  3. "io"
  4. "os"
  5. "path/filepath"
  6. )
  7. func CopyFile(src, dst string) error {
  8. source, err := os.Open(src)
  9. if err != nil {
  10. return err
  11. }
  12. defer source.Close()
  13. destDir := filepath.Dir(dst)
  14. if err := os.MkdirAll(destDir, os.ModePerm); err != nil {
  15. return err
  16. }
  17. destination, err := os.Create(dst)
  18. if err != nil {
  19. return err
  20. }
  21. defer destination.Close()
  22. _, err = io.Copy(destination, source)
  23. return err
  24. }
  25. func CreateHardLink(target, linkName string) error {
  26. // 文件夹不存在则创建
  27. destDir := filepath.Dir(linkName)
  28. if err := os.MkdirAll(destDir, os.ModePerm); err != nil {
  29. return err
  30. }
  31. return os.Link(target, linkName)
  32. }
  33. func FileExists(filename string) bool {
  34. _, err := os.Stat(filename)
  35. return !os.IsNotExist(err)
  36. }
  37. func RemoveEmptyDir(path string) error {
  38. entries, err := os.ReadDir(path)
  39. if err != nil {
  40. return err
  41. }
  42. if len(entries) == 0 {
  43. return os.Remove(path)
  44. }
  45. return nil
  46. }