本文将展示如何列出目录内容。
列出目录Golang 版本
1.12.1
前言
本文将展示如何列出目录内容。
实现
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
func main() {
fmt.Println("List by ReadDir")
listDirByReadDir(".")
fmt.Println()
fmt.Println("List by Walk")
listDirByWalk(".")
}
func listDirByWalk(path string) {
filepath.Walk(path, func(wPath string, info os.FileInfo,
err error) error {
if wPath == path {
return nil
}
if info.IsDir() {
fmt.Printf("[%s]\n", wPath)
return filepath.SkipDir
}
if wPath != path {
fmt.Println(wPath)
}
return nil
})
}
func listDirByReadDir(path string) {
lst, err := ioutil.ReadDir(path)
if err != nil {
panic(err)
}
for _, val := range lst {
if val.IsDir() {
fmt.Printf("[%s]\n", val.Name())
} else {
fmt.Println(val.Name())
}
}
}
$ go run main.go
List by ReadDir
[folder]
main.go
List by Walk
[folder]
main.go
原理
listDirByReadDirioutilReadDirFileInfoReadDirReadDirosFileReaddir
listDirByWalkfilepath.WalkWalkWalkFuncfilepath.SkipDirWalk