回答

收藏

如何执行文件系统扫描

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

[ol]当给定文件夹的路径时,我需要编写一个函数来扫描以文件夹为根的文件。
% ]; C3 H5 o$ y: ~$ f5 g) `然后我需要在文件夹中显示目录结构。[/ol]我知道怎么做 2(我会用 jstree 在浏览器中显示)。
& p. Y' b, E( @0 r1 G                                                                0 [% R! b, {+ A$ ]0 {- f9 T2 s! W0 l
    解决方案:                                                               
& ~% ~2 e9 g7 J7 Q) ]8 q                                                                编辑 1.16:还有足够多的人回答这个问题。我想我会为 Go 1.16 更新它。+ |2 |, X) ?& u: ^3 F- O2 ]+ v
Go 1.引入16 的函数filepath.WalkDir与之前编辑中提到的 相比filepath.Walk 性能更好。这是一个工作示例:
& D5 ^8 J  p: @' P- X7 E3 L  U
    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)}
    " f! L' l% Y4 i% U
编辑:还有足够多的人回答这个问题。我想我会为 Go1 API 更新它filepath.Walk() 工作示例。原文如下。  F& ]; |! H5 Z) d( Z/ O7 L& R
    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)}
    1 P; f9 N( W' B3 w
请注意 filepath.Walk 递归遍历目录树。
: P1 V6 h$ `* [/ V5 N7 T4 [这是一个示例操作:/ A- w9 |6 h' F
    $ 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 . T7 `: b5 R$ v% E9 a; w
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则