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]) } } |