Golang学习笔记--遍历文件夹及子文件夹的所有文件

遍历文件夹及子文件夹下的所有文件,最容易想到的就是用递归的方法,先访问当前目录,读取当前目录下的所有文件,如果是个目录,递归调用遍历目录下的所有文件。具体代码如下:

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

 

你可能感兴趣的:(Golang,golang学习)