登录
首页 >  Golang >  Go问答

递归遍历文件系统的方法

来源:stackoverflow

时间:2024-03-02 16:45:16 215浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《递归遍历文件系统的方法》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

当尝试运行程序时需要显示所有 .md 文件,我有一个包含 .md 的测试子文件夹,但脚本找不到它?

import (
    "fmt"
    "log"
    "strings"
    "os"
)

func main() {

    dir, err := os.ReadDir(".")

    if err != nil {
        log.Fatal(err)
    }

    for _, x := range dir {
        if strings.HasSuffix(x.Name(), ".md") {
            fmt.Println(x.Name())
        }
    }
}

正确答案


您需要使用 filepath.WalkDir 递归检查目录,或者您可以使用 1.16 中引入的 filepath.Walkos.readdir 仅在提供的目录中工作。

filepath.walk(".", func(path string, info fs.fileinfo, err error) error {
    if err != nil {
        fmt.printf("prevent panic by handling failure accessing a path %q: %v\n", path, err)
        return err
    }

    if strings.hassuffix(info.name(), ".md") {
        fmt.printf("visited file or dir: %q\n", path)
    }

    return nil
})

您可以使用Walkdir

package main

import (
   "io/fs"
   "path/filepath"
)


func main() {
   filepath.WalkDir(".", func(s string, d fs.DirEntry, e error) error {
    if e != nil { return e }
    if ! d.IsDir() {
       println(s)
    }
    return nil
 })
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>