应根据需求层级选择:只需单层目录列表用os.ReadDir,需递归遍历整个目录树用filepath.WalkDir;旧版Go兼容可选filepath.Walk,但推荐升级迁移。

在 Go 语言中遍历目录有多种方式,ioutil.ReadDir(已弃用,现为 os.ReadDir)适合简单、单层目录读取;而 filepath.Walk(或更现代的 filepath.WalkDir)适用于递归遍历整个目录树。两者用途不同,选错会导致逻辑错误或性能问题。
ioutil.ReadDir 自 Go 1.16 起已被标记为废弃,应改用 os.ReadDir。它返回 []fs.DirEntry,轻量且不预加载文件信息,适合快速列出当前目录下的条目。
fs.DirEntry,调用 .Name() 获取文件名,.IsDir() 判断是否为目录.Info()(会触发一次系统调用)示例:
entries, err := os.ReadDir("./data")
if err != nil {
log.Fatal(err)
}
for _, entry := range entries {
name := entry.Name()
if entry.IsDir() {
fmt.Printf("DIR: %s\n", name)
} else {
fmt.Printf("FILE: %s\n", name)
}
}
filepath.WalkDir 是 Go 1.16 引入的替代 filepath.Walk 的函数,性能更好、更安全(避免重复 stat、支持跳过子目录等)。它按深度优先顺序访问每个文件/目录,并通过回调函数处理每个路径。
FlowMuse AI
节点式AI视觉创作引擎
85
查看详情
func(path string, d fs.DirEntry, err error) error
filepath.SkipDir,将跳过当前目录及其所有子项示例:打印所有 .go 文件路径
err := filepath.WalkDir("./src", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err // 或 log.Printf("skip %s: %v", path, err)
}
if !d.IsDir() && strings.HasSuffix(d.Name(), ".go") {
fmt.Println(path)
}
return nil
})
if err != nil {
log.Fatal(err)
}
filepath.Walk 仍可用,但内部会对每个路径调用 os.Stat,开销略大;且无法跳过子目录(除非手动拼接路径并提前 return)。若项目需支持 Go
p
ath string 和 info os.FileInfo,无需再调用 Stat
info.IsDir() 后,对子目录路径手动处理判断标准很简单:
os.ReadDir
filepath.WalkDir
filepath.Walk,但建议逐步迁移WalkDir 封装,或使用第三方库如 golang.org/x/tools/filetype
以上就是如何在Golang中遍历目录文件_使用ioutil ReadDir和filepath Walk的详细内容,更多请关注其它相关文章!
# 目录下
# 烟台营销推广多少钱
# seo抓包技术出售
# 有品推广的营销方案
# 百度seo公司报价
# 营销推广专业技能
# 中山百度网站推广公司
# 弋江区网站优化怎么做
# 哈尔滨直播seo
# 巢湖学院网站建设
# 镇江抖音营销推广难度
# 已被
# go
# 的是
# 布尔
# 如何在
# 跳过
# 回调
# 遍历
# 递归
# 配置文件
# 回调函数
# golang
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
TikTok私信无法发送表情怎么办 TikTok消息表情发送修复方法
《360浏览器》自动保存账号密码设置方法
火狐浏览器无法自动更新怎么办 手动更新火狐浏览器到最新版本【解决】
以下哪一个是适应长期护理制度发展而设立的新职业
vivo手机视频通话美颜怎么设置_vivo视频通话美颜开启方法
苹果17 Pro如何启用分屏浏览_iPhone 17 Pro分屏浏览设置步骤
Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程
热血江湖归来医师加点攻略
批改网官网首页登录 批改网学生用户登录入口
《腾讯相册管家》注销账号方法
C++ optional用法详解_C++17处理可能为空的返回值
谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法
研招网官方网站正版登录网址_中国研究生招生信息网官网首页
在PySimpleGUI中实现键盘按键绑定按钮事件
如何配置VS Code作为您Git操作的默认编辑器
PHP多语言网站的实现:会话管理与翻译函数优化教程
Win10截图远程协助 Win10远程桌面截屏法【场景应用】
漫蛙官网(首页入口)_漫蛙漫画稳定访问教程分享
《饿了么》拼好饭点外卖教程2025
TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法
《新三国志曹操传》游历事件袁尚突围攻略
盲鳗善于分泌黏液猜猜主要用来做什么
如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】
铁拳8在线玩 铁拳8在线秒玩入口
人教版电子教材在线获取指南
鲁班大师乓乓皮肤获取方法
苹果手机手电筒无法开启
抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系
《米姆米姆哈》米姆获取及技能攻略
Lar*el Socialite单设备登录策略:实现用户唯一会话管理
从HTML表单获取逗号分隔值并转换为NumPy数组进行预测
微信客户端如何找回密码_微信客户端忘记密码找回方法
《杖剑传说》食谱大全
在J*a中如何实现在线问答与评分系统_问答评分项目开发方法说明
《百度畅听版》关闭兴趣推荐方法
Lar*el Eloquent中通过Join查询关联数据表:解决多行子查询问题
wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式
《随手记》启用语音备注方法
免费占卜在线神算_免费占卜手机神算
网易云音乐闹钟铃声设置教程
vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读
PSD转AI文件的简单方法
如何发挥新媒体矩阵作用?新媒体矩阵怎么搭建?
PHP动态导航按钮:根据用户登录状态切换链接与文本
yandex网页版直接登录 yandex官方入口平台访问方法
sublime text 4如何安装_最新版sublime下载与汉化教程
基于 Flink 和 Kafka 实现高效流处理:连续查询与时间窗口
毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明
mysql如何管理数据库账户_mysql数据库账户管理技巧
使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel
2025-12-18
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。