1 package main
2
3 import (
4 "fmt"
5 "io/ioutil"
6 "log"
7 )
8
9 func listFiles(dirname string, level int) {
10 // level用来记录当前递归的层次,生成带有层次感的空格
11 s := "|--"
12 for i := 0; i < level; i++ {
13 s = "| " + s
14 }
15 fileInfos, err := ioutil.ReadDir(dirname)
16 if err != nil {
17 log.Fatal(err)
18 }
19 for _, fi := range fileInfos {
20 filename := dirname + "\\" + fi.Name()
21 fmt.Printf("%s%s\n", s, filename)
22 if fi.IsDir() {
23 //递归调用方法
24 listFiles(filename, level+1)
25 }
26 }
27
28 /*
29 |--D:\Go\web2\aa.txt
30 |--D:\Go\web2\bb.txt
31 |--D:\Go\web2\demo.go
32 |--D:\Go\web2\dir1
33 | |--D:\Go\web2\dir1\Test1927239612
34 | | |--D:\Go\web2\dir1\Test1927239612\text.txt1079166724
35 | |--D:\Go\web2\dir1\a.txt
36 | |--D:\Go\web2\dir1\b.tct
37 |--D:\Go\web2\test.png
38 |--D:\Go\web2\user.db
39 */
40 }
41
42 func main() {
43 /**
44 遍历文件夹:
45 */
46 dirname := "D:\\Go\\web2"
47 listFiles(dirname, 0)
48
49 }