util_io.go 841 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. RemoveDir(path)
  25. } else {
  26. // 如果是文件,直接删除文件
  27. err = os.Remove(path)
  28. if err != nil {
  29. return err
  30. }
  31. }
  32. }
  33. // 删除目录本身
  34. err = os.Remove(dirPath)
  35. if err != nil {
  36. return err
  37. }
  38. return nil
  39. }