Go语言实战案例-读取本地文本文件内容

在《Go语言实战案例》中 案例12:读取本地文本文件内容 的完整内容,非常适合初学者掌握文件输入操作,是构建命令行工具或数据处理程序的基础技能。


案例12:读取本地文本文件内容

📄 文件操作 | 📖 读取文本 | 💡 标准库实战


一、 案例目标

编写一个 Go 程序,从本地读取一个 .txt 文本文件的内容,并在终端中完整打印出来。


二、应用场景示例

  • • 配置文件读取(如:.env、config.txt);
  • • 文本数据处理(如:导入日志、评论、文章);
  • • 构建命令行工具和数据分析程序;
  • • 文件预览器开发;

三、 涉及知识点

知识点 说明
os 文件操作基本支持
ioutil / os.ReadFile 简单读取整个文件内容
bufio + os.Open 更细粒度的逐行读取
错误处理 防止文件不存在或读取失败

四、 功能需求

    1. 用户输入文件路径或程序指定文件路径;
    1. 打开文件并读取其全部内容;
    1. 将文件内容原样输出至终端;
    1. 捕获并处理打开失败或读取失败的异常;

五、完整代码实现(一次性读取)

go 复制代码
package main

import (
    "fmt"
    "os"
)

func main() {
    // 假设我们读取的是当前目录下的 file.txt 文件
    filename := "file.txt"

    // 读取文件内容
    content, err := os.ReadFile(filename)
    if err != nil {
        fmt.Println("读取文件失败:", err)
        return
    }

    // 输出文件内容
    fmt.Println("文件内容如下:")
    fmt.Println(string(content))
}

六、 示例文本文件 file.txt

复制代码
Go 是一个开源编程语言,易于构建简单、可靠、高效的软件。

欢迎来到 Go 世界!

运行输出示例:

复制代码
文件内容如下:
Go 是一个开源编程语言,易于构建简单、可靠、高效的软件。

欢迎来到 Go 世界!

七、高级用法:逐行读取文本内容(更适合大文件)

go 复制代码
package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    filename := "file.txt"
    file, err := os.Open(filename)
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    fmt.Println("逐行读取文件内容:")
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }

    if err := scanner.Err(); err != nil {
        fmt.Println("读取文件时出错:", err)
    }
}

八、常见错误处理

问题 错误提示 解决方案
文件不存在 no such file or directory 检查路径是否正确,文件是否存在
没有权限 permission denied 检查文件权限
中文乱码 在 Windows 读取 UTF-8 需确保文本是 UTF-8 编码 用记事本另存为 UTF-8

九、 拓展建议

    1. 让用户通过命令行参数指定文件路径;
    1. 实现搜索关键词的功能(如 grep);
    1. 支持读取 JSON 或 CSV 并解析;
    1. 实现"读取、修改、保存"文件工具;
    1. 结合 Web 接口展示读取内容(作为后续项目开发基础);

小结

通过本案例你学会了:

✅ 如何读取本地文件

✅ 如何处理文件不存在或读取失败等异常

✅ 两种读取方式:一次性读取 vs 逐行读取

✅ 初步掌握了 Go 中文件处理的基本套路


相关推荐
郭京京3 分钟前
go语言sync.Map和atomic包
go
布朗克1684 分钟前
Spring Boot项目通过RestTemplate调用三方接口详细教程
java·spring boot·后端·resttemplate
uhakadotcom1 小时前
使用postgresql时有哪些简单有用的最佳实践
后端·面试·github
IT毕设实战小研1 小时前
基于Spring Boot校园二手交易平台系统设计与实现 二手交易系统 交易平台小程序
java·数据库·vue.js·spring boot·后端·小程序·课程设计
bobz9652 小时前
QT 字体
后端
泉城老铁2 小时前
Spring Boot 中根据 Word 模板导出包含表格、图表等复杂格式的文档
java·后端
用户4099322502122 小时前
如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法?
后端·github·trae
风象南2 小时前
开发者必备工具:用 SpringBoot 构建轻量级日志查看器,省时又省力
后端
RainbowSea2 小时前
伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 04
java·spring boot·后端
楽码2 小时前
理解自动修复:编程语言的底层逻辑
后端·算法·编程语言