亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何遞歸遍歷文件和目錄

如何遞歸遍歷文件和目錄

Go
FFIVE 2022-09-19 17:49:07
當嘗試運行程序需要顯示所有.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())        }    }}
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

您可以使用步行道

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

 })

}


查看完整回答
反對 回復 2022-09-19
?
四季花海

TA貢獻1811條經驗 獲得超5個贊

您需要使用文件路徑。WalkDir 以遞歸方式檢查目錄,也可以使用 1.16 文件路徑中引入的目錄。步行。 將僅在提供的目錄中工作。os.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

})




查看完整回答
反對 回復 2022-09-19
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

為了添加已經足夠的響應,這是我使用結構實現的container/ring

完整代碼在這里

type (

    DirectoryGraph struct {

        RootPath string

        root     *ring.Ring

        Node     *ring.Ring

    }

)


func NewDirectoryGraph(root string) DirectoryGraph {

    r := ring.New(1)

    graph := DirectoryGraph{

        RootPath: root,

        root:     r,

        Node:     r,

    }

    filepath.WalkDir(graph.RootPath, graph.walk)

    return graph

}


func (g DirectoryGraph) walk(s string, d fs.DirEntry, e error) error {

    if e != nil {

        return e

    }

    next := ring.New(1)

    node := g.serialize(s, d, e)

    next.Value = node

    g.root.Link(next).Next()

    return nil

}


// Serializes a file-node

func (g DirectoryGraph) serialize(s string, d fs.DirEntry, e error) FileNode {

    n := FileNode{

        Path: s,

        Dir:  d,

        Sys:  SysInfo{},

    }


    ...


    return n

}


查看完整回答
反對 回復 2022-09-19
  • 3 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號