使用path/filepath库的Walk函数可以很好的处理这个问题。
Walk函数原型
func Walk(root string, walkFn WalkFunc) error
walkFn是一个WalkFunc函数类型的参数,也就说第二个参数要传递函数进去,函数的原型如下。
WalkFunc原型
type WalkFunc func(path string, info os.FileInfo, err error) error
解释一下参数
- path:表示文件的路径
- info:表示文件的信息,同os.File.Stat()返回的对象一致
- err:错误信息
下面演示一下,目录如下:

golang扫描目录结构
package main import ( "fmt" "os" "path/filepath" ) func main() { filepath.Walk("./", func(path string, f os.FileInfo, err error) error { if f == nil { return err } if f.IsDir() { fmt.Println("dir:", path) return nil } fmt.Println("file:", path) return nil }) // output: // dir: ./ // dir: 2016 // dir: 2016/04 // dir: 2016/04/11 // dir: 2016/04/12 // file: 2016/04/12/1.log // file: recursion.go }
转载请注明:快乐编程 » golang扫描目录下的所有文件