当前位置: 首页 > news >正文

Go语言实战案例-遍历目录下所有文件

在《Go语言100个实战案例》中的 文件与IO操作篇 - 案例18:遍历目录下所有文件 的完整内容,帮助你掌握如何用 Go 遍历整个文件目录树,包括子目录中的所有文件。

🎯 案例目标

使用 Go 语言遍历指定目录,递归地列出该目录及其所有子目录下的所有文件路径。


🧩 应用场景

  • • 文件备份、文件管理工具开发
  • • 查找某种类型的文件(如 .jpg.txt
  • • 批量处理目录下文件,如格式转换或分析

🧠 涉及知识点

  • • 使用 filepath.WalkDir() 遍历目录结构
  • • 判断文件类型(文件或文件夹)
  • • 获取文件相对/绝对路径
  • • 错误处理

💻 示例代码:递归遍历目录下所有文件

package mainimport ("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)
}

🧪 拓展练习

  • • 获取每个文件的大小并打印
  • • 将结果写入日志文件
  • • 忽略特定文件夹(如 .git/
  • • 改为使用 os.ReadDir + 递归方式实现

✅ 小结

本案例帮助你学会了如何在 Go 中递归遍历整个文件目录结构。filepath.WalkDir 是处理目录树的利器,适用于各种需要深入访问文件系统的实际开发任务。

http://www.dtcms.com/a/291949.html

相关文章:

  • Go 的第一类对象与闭包
  • 基于单片机智能衣柜/智能衣橱设计
  • Go 并发(协程,通道,锁,协程控制)
  • 【Unity开发】坦克大战项目实现总结
  • Golang避免主协程退出方案
  • GoLang教程007:打印空心金字塔
  • PHP与Web页面交互:从基础表单到AJAX实战
  • 八大作业票(二)受限空间安全作业证
  • 智算中心光纤线缆如何实现自动化计算?
  • 汽车安全 | 汽车安全入门
  • 【机器学习】第五章 聚类算法
  • SpringBoot--Mapper XML 和 Mapper 接口在不同包
  • 基于Kubernetes的微服务CI/CD:Jenkins Pipeline全流程实践
  • 时序数据库 TDengine × Ontop:三步构建你的时序知识图谱
  • 【SVM】支持向量机实例合集
  • Dockerfile:镜像构建
  • 在资源受限单片机中使用printf等可变参函数时的陷阱(2025年7月22日)
  • DF与介质损耗
  • 深入解析谱聚类:RatioCut与Ncut的图拉普拉斯推导
  • AI AgentLLM架构演进的大逻辑和小脉络
  • RK3568 Linux驱动学习——SDK烧录
  • Docker 安装、常用命令、应用部署
  • Android接入RocketMQ的文章链接
  • JavaScript,发生异常,try...catch...finally处理,继续向上层调用者传递异常信息
  • 20250722在Ubuntu 24.04.2下配置编译RD-RK3588开发板的Android13的编译环境
  • 八大作业票(一) 动火安全作业证
  • 分布式高可用ELK平台搭建及使用保姆级教程指南
  • axios统一封装规范管理
  • 同步本地文件到服务器上的Docker容器
  • 学习做精准、自动化、高效的 GEO优化系统