新闻中心
如何在Golang中使用ioutil.ReadDir列出文件_Golang ReadDir文件列表与操作实践
ioutil.ReadDir是Go中读取目录内容的便捷函数,返回按文件名排序的fs.FileInfo切片,适用于旧项目维护;但自Go 1.16起已被os.ReadDir取代,后者性能更高、支持懒加载。

在Golang中,ioutil.ReadDir 是一个便捷函数,用于读取目录中的文件和子目录列表。虽然从 Go 1.16 开始官方建议使用 os.ReadDir 替代 ioutil.ReadDir,但了解其用法仍有实践价值,尤其在维护旧项目时。
使用 ioutil.ReadDir 列出文件
ioutil.ReadDir 返回一个按文件名排序的 fs.FileInfo 切片,每个元素代表目录中的一个条目。
基本用法如下:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
dir := "./" // 指定要读取的目录
files, err := ioutil.ReadDir(dir)
if err != nil {
fmt.Println("读取目录失败:", err)
return
}
for _, file := range files {
if file.IsDir() {
fmt.Printf("[目录] %s\n", file.Name())
} else {
fmt.Printf("[文件] %s (%d bytes)\n", file.Name(), file.Size())
}
}
}
这段代码会列出当前目录下所有条目,并区分文件和目录,同时显示文件大小。
筛选特定类型文件
实际开发中,常需过滤出特定扩展名的文件,比如只列出 .txt 文件。
可以通过检查文件名后缀实现:
for _, file := range files {
if !file.IsDir() && strings.HasSuffix(file.Name(), ".
txt") {
fmt.Println("文本文件:", file.Name())
}
}
别忘了导入 strings 包。这种模式适用于日志处理、配置加载等场景。
递归遍历子目录(注意 ioutil.ReadDir 不支持)
ioutil.ReadDir 只读取单层目录,不包含递归功能。若需遍历子目录,可结合递归函数手动实现。
Lateral App
整理归类论文
85
查看详情
示例:递归打印所有文件
func walkDir(path string) {
files, err := ioutil.ReadDir(path)
if err != nil {
fmt.Println("访问路径失败:", path, err)
return
}
for _, file := range files {
filepath := path + "/" + file.Name()
if file.IsDir() {
fmt.Println("[进入目录]", filepath)
walkDir(filepath) // 递归调用
} else {
fmt.Println("[文件]", filepath)
}
}
}
该函数能深入每一级子目录,适合构建文件索引或批量处理任务。
推荐迁移到 os.ReadDir(Go 1.16+)
自 Go 1.16 起,ioutil.ReadDir 被标记为废弃,推荐使用 os.ReadDir,它返回 fs.DirEntry 类型,性能更高且更灵活。
等效写法:
entries, err := os.ReadDir("./")
if err != nil {
log.Fatal(err)
}
for _, entry := range entries {
info, _ := entry.Info()
fmt.Printf("%s: %v bytes\n", entry.Name(), info.Size())
}
新 API 更轻量,因为 DirEntry 提供懒加载能力,仅在需要时才调用 Info() 获取完整信息。
基本上就这些。掌握 ioutil.ReadDir 的使用有助于理解 Go 的文件系统操作逻辑,但在新项目中应优先采用 os.ReadDir。两者思路一致,迁移成本低。关键是根据需求判断是否需要递归、过滤或获取元数据。不复杂但容易忽略细节,比如错误处理和路径分隔符兼容性。
以上就是如何在Golang中使用ioutil.ReadDir列出文件_Golang ReadDir文件列表与操作实践的详细内容,更多请关注其它相关文章!
# 如何使用
# 晋州关键词seo
# 推广营销方案lto云6速6捷
# 山西省营销推广企业
# 纹身店推广营销
# 搜索seo查询软件
# 临湘网站建设设计
# 长宁营销推广难度怎么样
# 开封年货网站推广
# seo优化网站链接
# 邳州电话网站推广前景
# 复用
# 如何实现
# golang
# 更高
# 适用于
# 遍历
# 文件列表
# 如何在
# 加载
# 递归
# 递归函数
# ai
# 懒加载
# go
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
C#使用XPath查询节点时出错? 常见语法错误与调试技巧
fishbowl官网免费版 fishbowl养鱼网站入口
如何使用纯J*aScript判断Input元素是否在特定类容器内
汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口
如何使用Go和Martini动态服务解码后的图片
漫蛙网页登录入口 漫蛙漫画官方授权网址
2026春节假期票务安排_2026春节放假购票指南
抖音从哪里进入网页版_抖音官方入口链接
J*aScript设计模式实践_j*ascript代码优化
J*aScript:在map操作中高效处理空数组
蛙漫限时开放最深处链接_蛙漫全站漫画会员同款秒开地址
处理Kafka消费者会话超时:深入理解消息处理语义与幂等性
铁路12306改签能改到更早的车次吗_铁路12306改签提前车次规则
AI泡沫首次被“刺破”:GPU十年都无法存活!
照顾宝贝2小游戏点击立即在线玩
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口
优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题
修复二维数组索引越界异常:一维循环到二维坐标的正确映射
Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录
DLsite中文平台入口 DLsite官网内容在线查看
微博网页版主页入口 微博官方网站免登录访问
MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具
使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战
c++20的std::jthread是什么_c++可中断线程与RAII式管理
构建轻量级网站内部消息系统:Formspree 集成指南
163邮箱官方主页登录 直达网易邮箱登录核心页面
快手官方唯一登录入口 谨防山寨钓鱼网站
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
Python自定义类排序:解决lambda键值访问TypeError的实践指南
Go语言中的*string:深入理解字符串指针
解决Rails应用中内容错位与Turbo警告:meta标签误用导致富文本渲染异常
如何使 Jest 模拟函数默认抛出错误以提高测试效率
c++中的std::launder有什么实际用途_c++对象生命周期与指针优化
AngularJS $http POST请求数据传递与Go后端接收实践
在J*a中如何隐藏复杂性_使用门面模式组织对象交互
CSS响应式网页如何实现主次模块比例自适应_flex-grow与flex-shrink调整
黑猫投诉统一入口官网 消费者权益保护投诉平台
文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】
Surface怎么安装系统 微软Surface Pro U盘重装win11教程
漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址
Pygame教程:解决用户输入与游戏状态更新不同步问题
WordPress插件开发:正确注册卸载钩子与避免常见陷阱
苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】
如何将HTML表格多行数据保存到Google Sheets
AO3官方在线访问地址 Archive of Our Own最新镜像合集
C++如何实现线程池_C++11手动实现一个简单的固定大小线程池


2025-12-05
浏览次数:次
返回列表
txt") {
fmt.Println("文本文件:", file.Name())
}
}