文件夹遍历可以使用filepath.Walk(root string, walkFn filepath.WalkFunc) error
来实现,非常方便,root
可以是文件夹的绝对路径
也可以是文件的绝对路径
,但是通常使用文件夹
,对文件
来说,遍历没有意义。
新建文件traversalFolder.go
// traversalFolder.go
package main
import (
"fmt"
"os"
"path/filepath"
)
func walkFunc(path string, info os.FileInfo, err error) error {
if info == nil {
// 文件名称超过限定长度等其他问题也会导致info == nil
// 如果此时return err 就会显示找不到路径,并停止查找。
println("can't find:(" + path + ")")
return nil
}
if info.IsDir() {
println("This is folder:(" + path + ")")
return nil
} else {
println("This is file:(" + path + ")")
return nil
}
}
func showFileList(root string) {
err := filepath.Walk(root, walkFunc)
if err != nil {
fmt.Printf("filepath.Walk() error: %v\n", err)
}
return
}
在main.go
中可以调用
// FileRW project main.go
package main
import (
"fmt"
)
func main() {
var path string
fmt.Println("请输入想要遍历的路径:")
fmt.Scanf("%s", &path)
fmt.Println("=====")
// path = "D:\\精通windows server 2008 R2.pdf"
showFileList(path)
}