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.

38 lines
680 B

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. package utils
  2. import (
  3. "os"
  4. "path/filepath"
  5. )
  6. // FileMove: 文件移动供外部调用
  7. // src: 源位置 绝对路径相对路径都可以
  8. // dst: 目标位置 绝对路径相对路径都可以 dst 必须为文件夹
  9. func FileMove(src string, dst string) (err error) {
  10. if dst == "" {
  11. return nil
  12. }
  13. src, err = filepath.Abs(src)
  14. if err != nil {
  15. return err
  16. }
  17. dst, err = filepath.Abs(dst)
  18. if err != nil {
  19. return err
  20. }
  21. var revoke = false
  22. dir := filepath.Dir(dst)
  23. Redirect:
  24. _, err = os.Stat(dir)
  25. if err != nil {
  26. err = os.MkdirAll(dir, 0755)
  27. if err != nil {
  28. return err
  29. }
  30. if !revoke {
  31. revoke = true
  32. goto Redirect
  33. }
  34. }
  35. return os.Rename(src, dst)
  36. }