可以使用递归函数来实现读取目录中的所有文件和子目录,示例代码如下:

package main

import (
    "fmt"
    "io/fs"
    "os"
)

func readDir(dirPath string) {
    entries, err := os.ReadDir(dirPath)
    if err != nil {
        fmt.Println("read dir error:", err)
        return
    }
    for _, entry := range entries {
        if entry.IsDir() {
            subDirPath := dirPath + "/" + entry.Name()
            readDir(subDirPath) // 递归读取子目录
        } else {
            fileInfo, err := entry.Info()
            if err != nil {
                fmt.Println("get file info error:", err)
                continue
            }
            fmt.Println(fileInfo.Name(), fileInfo.Size(), fileInfo.Mode().Perm())
        }
    }
}

func main() {
    readDir(".")
}

上述代码中,readDir函数通过os.ReadDir方法读取指定目录下的所有文件和子目录,如果遇到子目录,则递归调用自身来读取子目录中的文件。对于每个文件,使用entry.Info方法获取文件信息,然后输出文件名、大小和权限。最后在main函数中调用readDir函数来读取当前目录下的所有文件和子目录

golang读取目录如果目录中还包含目录则接着读取目录直到读取所有的文件获取所有文件信息请用osReadDir方法

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

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