利用Go语言遍历目录下所有文件的示例代码

 更新时间:2025年07月23日 08:33:07   作者:程序员爱钓鱼  
这篇文章主要介绍了如何使用 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遍历目录下所有文件的资料请关注脚本之家其它相关文章!

相关文章

  • Go中的 panic / recover 简介与实践记录

    Go中的 panic / recover 简介与实践记录

    这篇文章主要介绍了Go中的 panic / recover 简介与实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 详解Golang中Channel的用法

    详解Golang中Channel的用法

    如果说goroutine是Go语言程序的并发体的话,那么channels则是它们之间的通信机制。这篇文章主要介绍Golang中Channel的用法,需要的朋友可以参考下
    2020-11-11
  • Go语言怎么使用变长参数函数

    Go语言怎么使用变长参数函数

    本文主要介绍了Go语言怎么使用变长参数函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Go Uber静态分析工具NilAway使用初体验

    Go Uber静态分析工具NilAway使用初体验

    这篇文章主要介绍了Go Uber静态分析工具NilAway使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Go select使用与底层原理讲解

    Go select使用与底层原理讲解

    这篇文章主要介绍了Go select使用与底层原理讲解,select是Go提供的IO多路复用机制,可以用多个cas同时监听多个channl的读写状态,相关内容需要的朋友可以参考一下
    2022-07-07
  • 手把手教你导入Go语言第三方库

    手把手教你导入Go语言第三方库

    本文主要介绍了手把手教你导入Go语言第三方库,通过导入gin包来深入学习,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • golang模拟实现带超时的信号量示例代码

    golang模拟实现带超时的信号量示例代码

    这篇文章主要给大家介绍了关于golang模拟实现带超时的信号量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-09-09
  • Go语言学习之context包的用法详解

    Go语言学习之context包的用法详解

    日常Go开发中,Context包是用的最多的一个了,几乎所有函数的第一个参数都是ctx,那么我们为什么要传递Context呢,Context又有哪些用法,底层实现是如何呢?相信你也一定会有探索的欲望,那么就跟着本篇文章,一起来学习吧
    2022-10-10
  • 使用Go语言编写HTTP中间件的示例详解

    使用Go语言编写HTTP中间件的示例详解

    在Go语言中,HTTP中间件是一种处理HTTP请求和响应的函数,它可以拦截到请求并对其进行处理,然后再将请求传递给下一个中间件或目标处理程序,本文给大家介绍了使用Go语言编写HTTP中间件的示例,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-01-01
  • go并发数据一致性事务的保障面试应答

    go并发数据一致性事务的保障面试应答

    这篇文章主要为大家介绍了go并发数据一致性事务的保障面试应答,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论