遍历文件夹及子文件夹下的所有文件,最容易想到的就是用递归的方法,先访问当前目录,读取当前目录下的所有文件,如果是个目录,递归调用遍历目录下的所有文件。具体代码如下:
package main
import (
"fmt"
"io/ioutil"
)
func GetAllFile(pathname string, s []string) ([]string, error) {
rd, err := ioutil.ReadDir(pathname)
if err != nil {
fmt.Println("read dir fail:", err)
return s, err
}
for _, fi := range rd {
if fi.IsDir() {
fullDir := pathname + "/" + fi.Name()
s, err = GetAllFile(fullDir, s)
if err != nil {
fmt.Println("read dir fail:", err)
return s, err
}
} else {
fullName := pathname + "/" + fi.Name()
s = append(s, fullName)
}
}
return s, nil
}
func main() {
//遍历打印所有的文件名
var s []string
s, _ = GetAllFile("/root/go/src/test", s)
fmt.Printf("slice: %v", s)
}