新闻中心

如何在Golang中使用ioutil.ReadDir列出文件_Golang ReadDir文件列表与操作实践

2025-12-05
浏览次数:
返回列表
ioutil.ReadDir是Go中读取目录内容的便捷函数,返回按文件名排序的fs.FileInfo切片,适用于旧项目维护;但自Go 1.16起已被os.ReadDir取代,后者性能更高、支持懒加载。

如何在golang中使用ioutil.readdir列出文件_golang 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 Lateral App

整理归类论文

Lateral App 85 查看详情 Lateral App

示例:递归打印所有文件

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手动实现一个简单的固定大小线程池 

搜索