利用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遍历目录下所有文件的资料请关注脚本之家其它相关文章!

相关文章

  • Golang极简入门教程(二):方法和接口

    Golang极简入门教程(二):方法和接口

    这篇文章主要介绍了Golang极简入门教程(二):方法和接口,本文同时讲解了错误、匿名域等内容,需要的朋友可以参考下
    2014-10-10
  • golang去除多余的空格与换行符示例代码

    golang去除多余的空格与换行符示例代码

    Golang是一种强大的编程语言,提供了丰富的字符串处理功能,这篇文章主要给大家介绍了关于golang去除多余的空格与换行符的相关资料,需要的朋友可以参考下
    2023-10-10
  • 手把手带你走进Go语言之常量解析

    手把手带你走进Go语言之常量解析

    这篇文章主要介绍了Go语言之常量解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Golang并发编程中Context包的使用与并发控制

    Golang并发编程中Context包的使用与并发控制

    Golang的context包提供了在并发编程中传递取消信号、超时控制和元数据的功能,本文就来介绍一下Golang并发编程中Context包的使用与并发控制,感兴趣的可以了解一下
    2024-11-11
  • go实现冒泡排序算法

    go实现冒泡排序算法

    冒泡排序算法是数据结构中常用的一种算法,本文就介绍了go实现冒泡排序算法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • golang判断字符串是是否包含另一字符串的示例代码

    golang判断字符串是是否包含另一字符串的示例代码

    在Go语言中,可以使用strings.Contains()函数来判断一个字符串是否包含另一个字符串,该函数接受两个参数:要搜索的字符串和要查找的子字符串,如果子字符串存在于要搜索的字符串中,则返回true,否则返回false,下面通过示例详细介绍,感兴趣的朋友一起看看吧
    2023-09-09
  • Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结

    Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结

    这篇文章主要介绍了Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结,本文直接给出操作代码,同时对代码加上了详细注释,需要的朋友可以参考下
    2014-11-11
  • Golang中map缩容的实现

    Golang中map缩容的实现

    本文主要介绍了Go语言中map的扩缩容机制,包括grow和hashGrow方法的处理,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • GO语言函数(func)的声明与使用详解

    GO语言函数(func)的声明与使用详解

    这篇文章主要介绍了GO函数(func)的声明与使用,包括了GO语言函数声明与使用,GO语言递归函数,GO语言内置函数,GO语言函数defer应用,GO语言函数可变长度参数需要的朋友可以参考下
    2022-12-12
  • Go语言调用SiliconFlow实现文本转换为MP3格式

    Go语言调用SiliconFlow实现文本转换为MP3格式

    这篇文章主要为大家详细介绍了Go语言如何调用 SiliconFlow 语音生成 API 的脚本,用于将文本转换为 MP3 格式的语音文件,感兴趣的小伙伴可以了解下
    2025-02-02

最新评论