新闻中心
Golang如何用ioutil ReadDir列出目录文件_Golang ReadDir文件列表与操作实践
ioutil.ReadDir用于读取目录内容,返回[]os.FileInfo,可遍历获取文件名、大小、类型等信息,支持按扩展名过滤;Go 1.16起推荐使用os.ReadDir,返回fs.DirEntry更高效。

在Go语言中,ioutil.ReadDir 是一个便捷的方法,用于读取指定目录下的文件和子目录信息。虽然从Go 1.16起官方推荐使用 os.ReadDir 替代 ioutil.ReadDir,但了解其用法仍有助于维护旧项目。下面介绍如何使用 ioutil.ReadDir 获取目录内容,并进行常见操作。
使用 ioutil.ReadDir 列出目录文件
注意:ioutil.ReadDir 在 Go 1.16 后已被弃用,建议新项目使用 os.ReadDir。但以下示例仍适用于老版本。
要列出某个目录下的所有条目,可以这样写:
package main
import (
"fmt"
"io/ioutil"
"log"
)
func main() {
dir := "./" // 指定目录路径
files, err := ioutil.ReadDir(dir)
if err != nil {
log.Fatal(err)
}
for _, file := range files {
fmt.Println(file.Name())
}
}
这段代码会打印当前目录下所有文件和文件夹的名称。
获取文件详细信息并分类
file 对象是 os.FileInfo 类型,包含丰富的元数据。我们可以判断它是文件还是目录,并进一步筛选:
- file.IsDir() 返回 true 表示是目录
- file.Mode().IsRegular() 可判断是否为普通文件
- file.Size() 获取文件大小(字节)
- file.ModTime() 获取最后修改时间
示例:分别列出文件和目录
Zyro AI Background Remover
Zyro推出的AI图片背景移除工具
145
查看详情
for _, file := range files {
if file.IsDir() {
fmt.Printf("[DIR] %s\n", file.Name())
} else {
fmt.Printf("[FILE] %s (%d bytes)\n", file.Name(), file.Size())
}
}
过滤特定类型文件(如 .go 文件)

结合 path/filepath 中的 Ext 函数,可轻松实现按扩展名过滤:
import "path/filepath"
// ...
for _, file := range files {
if !file.IsDir() {
ext := filepath.Ext(file.Name())
if ext == ".go" {
fmt.Println("Go文件:", file.Name())
}
}
}
你也可以用 strings.HasSuffix 进行前缀或后缀匹配,比如查找以 "config" 开头的文件。
替代方案:使用 os.ReadDir(推荐)
Go 1.16+ 推荐使用 os.ReadDir,它返回更轻量的 fs.DirEntry,性能更好:
package main
import (
"fmt"
"os"
)
func main() {
entries, err := os.ReadDir("./")
if err != nil {
panic(err)
}
for _, entry := range entries {
info, _ := entry.Info()
if entry.IsDir() {
fmt.Printf("[DIR] %s\n", entry.Name())
} else {
fmt.Printf("[FILE] %s (%d bytes)\n", entry.Name(), info.Size())
}
}
}
这种方式更现代、高效,且与模块化文件系统兼容性更好。
基本上就这些。ioutil.ReadDir 虽然简单易用,但在新项目中应优先选择 os.ReadDir。掌握目录遍历和文件属性提取,是文件处理的基础能力。不复杂但容易忽略的是错误处理和跨平台路径兼容问题,建议配合 filepath.Clean 或 filepath.Join 使用路径拼接。
以上就是Golang如何用ioutil ReadDir列出目录文件_Golang ReadDir文件列表与操作实践的详细内容,更多请关注其它相关文章!
# 是一个
# 网站优化总结
# 太仓企业网站建设服务
# 完美日记网站建设评价
# 湛江市主营网站建设企业
# 昭通营销推广招商平台
# 东营网站建设怎么建设的
# 鑫牛元网站建设
# 水乡集团网站建设
# 推荐泉州seo信息
# 随州seo厂家
# 可以用
# 你也
# go
# 的是
# 目录下
# 扩展名
# 遍历
# 如何用
# 文件列表
# 推荐使用
# ai
# 字节
# go语言
# golang
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法
深入理解J*a合成构造器:何时以及为何阻止其生成
三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】
如何在Promise链中有效终止错误处理后的执行
mc.js官网登录入口 mc.js官方登录入口最新版
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
Python自定义类排序:解决lambda键值访问TypeError的实践指南
GemBox Document HTML转PDF垂直文本渲染问题及解决方案
Pygame教程:解决用户输入与游戏状态更新不同步问题
押井守高度称赞《辐射4》:玩了八年都停不下来!
照顾宝贝2小游戏免费秒玩入口
Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
理解Python模块与全局变量的作用域管理
小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口
一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】
Vue.js 图片显示异常排查:理解应用挂载范围与DOM ID唯一性
yandex入口引擎手机版 yandex安卓版下载入口
uc浏览器网页版入口 uc浏览器网页版最新网址
c++如何实现单例设计模式_c++线程安全的单例模式写法
微信语音通话掉线如何解决 微信语音通话稳定优化方法
怎么在mac上运行html代码_mac运行html代码方法【指南】
Python异步编程实践:使用Binance API构建实时交易数据流
使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
火狐浏览器占用内存高卡顿怎么办 火狐浏览器性能优化设置技巧
C++如何解决segmentation fault_C++段错误调试与原因分析
腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录
CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
AO3官网镜像链接 Archive of Our Own同人文在线浏览
HTML5原生日期选择器与jQuery UI:实现日期选择器的联动与程序化控制
PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】
c++如何使用Meson构建系统_c++比CMake更快的构建工具
LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置
网易大神账号申诉需要多久_网易大神账号申诉流程说明
Promise错误处理:在catch后终止链式then执行的策略
机构:以往存储涨价周期小米利润率实际上有所改善 能转嫁给消费者等
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法
微信网页版官方入口教程 微信网页版网页版快速登录步骤
QQ网页版官方账号入口 QQ网页版网页版登录指南
快手网页版在线登录 快手网页版官网入口快速访问
qq音乐在线播放入口_qq音乐电脑版登录链接
解决移动端滚动问题的overflow属性应用指南
CSS子选择器:如何区分并样式化嵌套列表的子层级


2025-11-16
浏览次数:次
返回列表