package files import ( "io/fs" "os" "path/filepath" ) // CheckAndCreateDir 检查文件夹是否存在,不存在则创建(包括各级父目录) func CheckAndCreateDir(dirPath string) error { // 检查文件夹是否存在 _, err := os.Stat(dirPath) if err == nil { // 文件夹已存在 return nil } // 判断错误类型是否为不存在 if os.IsNotExist(err) { // 创建文件夹,0755表示权限:所有者可读写执行,组和其他用户可读执行 // MkdirAll会递归创建所有不存在的父目录 err := os.MkdirAll(dirPath, 0755) if err != nil { return err } return nil } // 其他错误(如权限问题等) return err } // ListFiles 遍历目录下的所有文件(递归) // 参数: // // root - 起始目录 // onlyFiles - 是否只返回文件(true: 不包含目录) func ListFiles(root string, onlyFiles bool) ([]string, error) { var files []string err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error { if err != nil { return err } // 跳过目录时 if d.IsDir() && onlyFiles { return nil } files = append(files, path) return nil }) return files, err }