golang遞歸遍歷目錄

package main

import (
	"fmt"
	"io/ioutil"
)

func  WalkDir(filepath string) ([]string, error) {
	files, err := ioutil.ReadDir(filepath)  // files爲當前目錄下的所有文件名稱【包括文件夾】
	if err != nil {
		return nil, err
	}


	var allfile []string
	for _, v := range files{
		fullPath := filepath + "\\" + v.Name()  // 全路徑 + 文件名稱
		if v.IsDir() {  // 如果是目錄
			a, _ := WalkDir(fullPath)  // 遍歷改路徑下的所有文件
			allfile = append(allfile, a...)
		}else{
			allfile = append(allfile, fullPath) // 如果不是文件夾,就直接追加到路徑下
		}
	}

	return allfile, nil
}

func main() {
	files, _ := WalkDir(`D:\docs\legal`)
    for _, v := range files{
		fmt.Println(v)
	}
}

層次顯示目錄

package main

import (
	"fmt"
	"io/ioutil"
)

func  WalkDir(filepath string, level int) ([]string, error) {
	prefix := "|"
	for i := 0; i < level ; i++ {
		prefix += "------"
	}
	files, err := ioutil.ReadDir(filepath)  // files爲當前目錄下的所有文件名稱【包括文件夾】
	if err != nil {
		return nil, err
	}


	var allfile []string
	for _, v := range files{
		fullPath := filepath + "\\" + v.Name()  // 全路徑 + 文件名稱
		if v.IsDir() {  // 如果是目錄
			allfile = append(allfile, prefix + v.Name())
			a, _ := WalkDir(fullPath, level + 1)  // 遍歷改路徑下的所有文件
			allfile = append(allfile, a...)
		}else{
			allfile = append(allfile, prefix + v.Name()) // 如果不是文件夾,就直接追加到路徑下
		}
	}

	return allfile, nil
}

func main() {
	files, _ := WalkDir(`D:\docs\legal`, 1)
    for _, v := range files{
		fmt.Println(v)
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章