利用Go语言遍历目录下所有文件的示例代码
作者:程序员爱钓鱼
这篇文章主要介绍了如何使用 Go 语言遍历指定目录,递归地列出该目录及其所有子目录下的所有文件路径,并有详细的代码示例供大家参考,需要的朋友可以参考下
案例目标
使用 Go 语言遍历指定目录,递归地列出该目录及其所有子目录下的所有文件路径。
应用场景
- • 文件备份、文件管理工具开发
 - • 查找某种类型的文件(如 
.jpg,.txt) - • 批量处理目录下文件,如格式转换或分析
 
涉及知识点
- • 使用 
filepath.WalkDir()遍历目录结构 - • 判断文件类型(文件或文件夹)
 - • 获取文件相对/绝对路径
 - • 错误处理
 
示例代码:递归遍历目录下所有文件
package main
import (
    "fmt"
    "io/fs"
    "path/filepath"
)
func main() {
    root := "./testfiles" // 要遍历的目录
    err := filepath.WalkDir(root, func(path string, d fs.DirEntry, err error) error {
        if err != nil {
            fmt.Println("访问出错:", err)
            return err
        }
        // 判断是否为文件
        if !d.IsDir() {
            fmt.Println("文件:", path)
        }
        return nil
    })
    if err != nil {
        fmt.Println("遍历失败:", err)
    }
}
示例目录结构
testfiles/ ├── a.txt ├── b.jpg ├── docs/ │ ├── c.pdf │ └── d.docx
执行输出示例
文件: testfiles/a.txt 文件: testfiles/b.jpg 文件: testfiles/docs/c.pdf 文件: testfiles/docs/d.docx
技术说明
| 函数 | 作用 | 
|---|---|
| filepath.WalkDir() | 遍历目录树 | 
| fs.DirEntry | 提供文件信息结构 | 
| d.IsDir() | 判断是否是文件夹 | 
| path | 每个文件或文件夹的完整路径 | 
拓展示例:只打印特定类型文件
if !d.IsDir() && filepath.Ext(path) == ".txt" {
    fmt.Println("TXT 文件:", path)
}
小结
本案例帮助你学会了如何在 Go 中递归遍历整个文件目录结构。filepath.WalkDir 是处理目录树的利器,适用于各种需要深入访问文件系统的实际开发任务。
以上就是利用Go语言遍历目录下所有文件的示例代码的详细内容,更多关于Go遍历目录下所有文件的资料请关注脚本之家其它相关文章!
