Golang实现递归对目录进行遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main

import (
    "errors"
    "fmt"
    "io/ioutil"
)

func GetAll(path string, files []string) ([]string, error) {
    read, err := ioutil.ReadDir(path)   //读取文件夹
    if err != nil{
        return files, errors.New("文件夹不可读取")
    }
// 如果是文件夹,进行递归处理
    for _, fi := range read {
        if fi.IsDir(){  // 判断是否是文件夹
            fullDir := path+"\"+fi.Name()   //构造新的路径
            files = append(files, fullDir)  //追加路径
            files,_ = GetAll(fullDir, files)    //文件夹递归
            }else {
            fullDir := path+"\"+fi.Name()   //构造新的路径
            files = append(files, fullDir)  //追加路劲
        }
    }
    return files,nil
}

func main()  {
    path := "D:\\WorkDir"       // 路径
    files := []string{}         // 数组字符串
    files, _ = GetAll(path, files)  // 抓取所有文件

    for i:= 0; i< len(files);i++{   //打印
        fmt.Println(files[i])
    }
}