使用go语言提取目录层次结构

我正在尝试使用go语言将文件夹的目录层次结构提取到数据结构中。filepath.Walk似乎是要走的路,但是到目前为止,我所能做的就是打印文件和文件夹的名称。这是我正在使用的:


func main() {

    visit := func(path string, info os.FileInfo, err error) error {

        if info.IsDir() {

            fmt.Println("dir:  ", path)

        } else {

            fmt.Println("file: ", path)

        }

        return nil

    }


    err := filepath.Walk("./", visit)

    if err != nil {

        log.Fatal(err)

    }

}

这将打印文件夹的名称,例如:


dir:   folder1

file:  folder1/file1.txt

file:  folder1/file2.txt

file:  folder1/file3.txt

file:  folder1/file4.txt

dir:   folder1/folder2

file:  folder1/folder2/file5.txt

file:  folder1/folder2/file6.txt

file:  folder1/folder2/file7.txt

file:  folder1/folder2/file8.txt

file:  folder1/folder2/file9.txt

对于树形结构,我考虑过使用类似的方法:


type File struct {

    Name string

    Content string

}


type Folder struct {

    Name    string

    Files   []File

    Folders []Folder

}

但是当然欢迎任何建议。


如何在go中将其转换为树结构?有没有更简单的方法可以做到这一点?


德玛西亚99
浏览 295回答 3
3回答

MMTTMM

我的一个小应用程序需要类似的东西,所以我写了一个小小的单独的库,供您在Github上观看。由于我需要为返回的os.FileInfo内置JSON序列化,因此我也添加了它。我知道对于这个问题的原始作者来说来不及了,但是如果有人正在寻找类似的东西,无论如何都要在这里发布。拉取请求很容易被接受:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go