回答

收藏

如何执行文件系统扫描

技术问答 技术问答 196 人阅读 | 0 人回复 | 2023-09-12

[ol]当给定文件夹的路径时,我需要编写一个函数来扫描以文件夹为根的文件。7 a8 c6 M! |8 J  G
然后我需要在文件夹中显示目录结构。[/ol]我知道怎么做 2(我会用 jstree 在浏览器中显示)。& H, B' R: r; U8 K
                                                                ' }( S- [' X6 Z( A
    解决方案:                                                                " `% {9 T+ z: E& p) D; Z* P
                                                                编辑 1.16:还有足够多的人回答这个问题。我想我会为 Go 1.16 更新它。# c4 _  {5 G) z7 c
Go 1.引入16 的函数filepath.WalkDir与之前编辑中提到的 相比filepath.Walk 性能更好。这是一个工作示例:4 O/ s* y+ i( O) r$ u* m# _0 k7 P
    package mainimport  "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)}
    5 ~5 r; T2 C' G: T  a& h
编辑:还有足够多的人回答这个问题。我想我会为 Go1 API 更新它filepath.Walk() 工作示例。原文如下。; t' [8 `# Z" D( S4 X) \( z, h, C
    package mainimport (  "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)}+ n. O4 p. E+ I) w" q
请注意 filepath.Walk 递归遍历目录树。0 I" Q1 {' w$ [- f/ |0 d* Y7 d
这是一个示例操作:7 w' ]$ f( T; F4 i  O. _% q
    $ mkdir -p dir1/dir2$ touch dir1/file1 dir1/dir2/file2$ go run walk.go dir1Visited: dir1Visited: dir1/dir2Visited: dir1/dir2/file2Visited: dir1/file1filepath.Walk() returned
    1 y) V: y! V# a* j( F
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则