,还可以使用os包中的Readdir方法来实现。

示例代码:

package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    root := "./" // 要遍历的根目录

    // 遍历根目录下的所有文件和目录
    fileInfos, err := ioutil.ReadDir(root)
    if err != nil {
        panic(err)
    }

    for _, fileInfo := range fileInfos {
        if fileInfo.IsDir() && !strings.Contains(fileInfo.Name(), "@") {
            // 如果是目录且目录名不包含@符号,则递归遍历该目录
            dirPath := filepath.Join(root, fileInfo.Name())
            walkDir(dirPath)
        }
    }
}

// 递归遍历目录及其子目录
func walkDir(dirPath string) {
    // 遍历目录下的所有文件和目录
    fileInfos, err := ioutil.ReadDir(dirPath)
    if err != nil {
        panic(err)
    }

    for _, fileInfo := range fileInfos {
        if fileInfo.IsDir() {
            // 如果是目录,则递归遍历该目录
            subDirPath := filepath.Join(dirPath, fileInfo.Name())
            walkDir(subDirPath)
        } else {
            // 如果是文件,则获取文件信息
            fmt.Println(fileInfo.Name(), fileInfo.Size(), fileInfo.ModTime())
        }
    }
}

该代码会遍历指定根目录下的所有目录和文件,排除第一级目录名中带有@符号的目录和所有文件,递归遍历子目录并获取文件信息

golang读取目录只排除第一级目录名中带有符号的目录和所有文件如果有目录接着遍历目录及其文件获取文件所有信息除了filepathWalk方法

原文地址: https://www.cveoy.top/t/topic/fsOa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录