我知道怎么做 2(我将使用 jstree 在浏览器中显示它)。
编辑 1.16:仍然有足够多的人回答这个问题,我想我会为 Go 1.16 更新它。
Go 1.16 中引入的函数filepath.WalkDir比之前编辑中提到的 filepath.Walk 具有更好的性能。这是一个工作示例:
package main import ( "flag" "fmt" "io/fs" "path/filepath" ) func visit(path string, di fs.DirEntry, err error) error { fmt.Printf("Visited: %s\n", path) return nil } func main() { flag.Parse() root := flag.Arg(0) err := filepath.WalkDir(root, visit) fmt.Printf("filepath.WalkDir() returned %v\n", err) }
编辑:仍然有足够多的人回答这个问题,我想我会为 Go1 API 更新它。这是filepath.Walk() 的一个工作示例。原文如下。
package main import ( "path/filepath" "os" "flag" "fmt" ) func visit(path string, f os.FileInfo, err error) error { fmt.Printf("Visited: %s\n", path) return nil } func main() { flag.Parse() root := flag.Arg(0) err := filepath.Walk(root, visit) fmt.Printf("filepath.Walk() returned %v\n", err) }
请注意 filepath.Walk 递归遍历目录树。
这是一个示例运行:
$ mkdir -p dir1/dir2 $ touch dir1/file1 dir1/dir2/file2 $ go run walk.go dir1 Visited: dir1 Visited: dir1/dir2 Visited: dir1/dir2/file2 Visited: dir1/file1 filepath.Walk() returned <nil>