使用filepath.Walk可高效递归遍历目录,结合os.FileInfo过滤文件类型并获取元数据,如跳过.git目录或仅处理.go文件,同时通过SkipDir提升性能。
在Go语言中实现文件夹遍历是一个常见需求,比如用于扫描日志目录、查找特定文件或统计项目代码行
数。Golang提供了简洁而强大的标准库支持,主要通过 os 和 filepath 包来完成。
Go中最常用的目录遍历方式是 filepath.Walk 函数。它会递归访问指定目录下的所有子目录和文件,并对每个条目执行传入的回调函数。
基本用法如下:
package main
import (
"fmt"
"log"
"path/filepath"
)
func main() {
root := "/path/to/your/directory" // 修改为你的目标路径
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if err != nil {
log.Printf("无法访问 %s: %v", path, err)
return nil // 返回nil继续遍历,返回err则中断
}
fmt.Println(path)
return nil
})
if err != nil {
log.Fatal(err)
}
}
在这个例子中,Walk 会对每个文件和目录调用匿名函数。参数说明:
实际应用中我们通常只关心某些类型的文件,或者想跳过特定目录(如 .git 或 node_modules)。
可以通过检查 info.IsDir() 和文件扩展名来实现:
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if err != nil {
return nil
}
// 跳过目录
if info.IsDir() {
dirName := info.Name()
if dirName == ".git" || dirName == "node_modules" {
return filepath.SkipDir // 跳过整个目录
}
return nil
}
// 只处理 .go 文件
if filepath.Ext(path) == ".go" {
fmt.Println("Go文件:", path)
}
return nil
})
利用 os.FileInfo 可以获取更多元数据:
例如打印所有 `.log` 文件的大小和修改时间:
if filepath.Ext(path) == ".log" {
fmt.Printf("文件: %s | 大小: %d 字节 | 修改时间: %s\n",
path, info.Size(), info.ModTime())
}
基本上就这些。filepath.Walk 简洁高效,适合绝大多数场景。注意处理权限不足或路径不存在的情况,避免程序崩溃。合理使用 SkipDir 能显著提升性能,特别是在大型项目中跳过不必要的依赖目录。
# golang
# git
# node
# go
# go语言
# 字节
# 回调函数
# ai
# 标准库
# 递归
相关文章:
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
如何在建站主机中优化服务器配置?
已有域名如何快速搭建专属网站?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
linux top下的 minerd 木马清除方法
,石家庄四十八中学官网?
如何快速上传建站程序避免常见错误?
如何在宝塔面板创建新站点?
个人网站制作流程图片大全,个人网站如何注销?
建站之星官网登录失败?如何快速解决?
如何配置支付宝与微信支付功能?
如何通过万网虚拟主机快速搭建网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
打鱼网站制作软件,波克捕鱼官方号怎么注册?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何制作算命网站,怎么注册算命网站?
如何在云主机快速搭建网站站点?
网站制作报价单模板图片,小松挖机官方网站报价?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
制作网站外包平台,自动化接单网站有哪些?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何快速搭建个人网站并优化SEO?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
建站主机是什么?如何选择适合的建站主机?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
制作宣传网站的软件,小红书可以宣传网站吗?
清除minerd进程的简单方法
东莞专业制作网站的公司,东莞大学生网的网址是什么?
建站之星如何助力企业快速打造五合一网站?
制作网站的公司有哪些,做一个公司网站要多少钱?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
做企业网站制作流程,企业网站制作基本流程有哪些?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
C#怎么使用委托和事件 C# delegate与event编程方法
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
如何选择适配移动端的WAP自助建站平台?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
定制建站如何定义?其核心优势是什么?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
制作旅游网站html,怎样注册旅游网站?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
*请认真填写需求信息,我们会在24小时内与您取得联系。