u_io.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package util
  2. import (
  3. "os"
  4. "path/filepath"
  5. )
  6. // CreateParentDir 存在不创建,不存在则创建父目录
  7. func CreateParentDir(filePath string) error {
  8. if err := os.MkdirAll(filepath.Dir(filePath), os.ModePerm); err != nil {
  9. return err
  10. }
  11. return nil
  12. }
  13. // RemoveDir 递归删除目录及其下的所有文件和子目录
  14. func RemoveDir(dirPath string) error {
  15. // 打开目录
  16. dir, err := os.Open(dirPath)
  17. if err != nil {
  18. return err
  19. }
  20. defer dir.Close()
  21. // 读取目录下的文件和子目录
  22. fileInfos, err := dir.Readdir(-1)
  23. if err != nil {
  24. return err
  25. }
  26. // 遍历文件和子目录
  27. for _, fileInfo := range fileInfos {
  28. path := filepath.Join(dirPath, fileInfo.Name())
  29. if fileInfo.IsDir() {
  30. // 如果是子目录,递归调用removeDir删除子目录及其下的文件和子目录
  31. if err = RemoveDir(path); err != nil {
  32. return err
  33. }
  34. } else {
  35. // 如果是文件,直接删除文件
  36. if err = os.Remove(path); err != nil {
  37. return err
  38. }
  39. }
  40. }
  41. // 删除目录本身
  42. if err = os.Remove(dirPath); err != nil {
  43. return err
  44. }
  45. return nil
  46. }