实现思路:
使用ioutil.ReadDir将当前文件信息都读取完,并对目录进行遍历,当当前目录遍历时,如果发现某个文件是子文件夹,就使用回调,再对子目录调用ioutil.ReadDir读取所有的文件信息,以此进行实现将当前文件夹下所有的文件进行遍历
package main
import (
"fmt"
"io/ioutil"
"log"
)
func main() {
//
listFiles(".", 0)
}
func listFiles(dirName string, level int) {
s := "|--"
for i := 0; i < level; i++ {
s = "| " + s
}
fileInfos, err := ioutil.ReadDir(dirName)
if err != nil {
log.Fatal(err)
}
for _, file := range fileInfos {
fileName := dirName + "/" + file.Name()
// 无论是不是目录打印出当前文件名
fmt.Printf("%s%s\n", s, fileName)
// 要是当前文件是目录文件,就使用递归,调用listFiles遍历子目录
if file.IsDir() {
listFiles(fileName, level+1)
}
}
}