util_io.go 881 B

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