u_io.go 1.4 KB

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