| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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
- }
|