Go 读取文件

1. 使用 ioutil.ReadFile 一次性读取整个文件到内存

Go 复制代码
package main

import (
	"io/ioutil"
	"log"
)

func main() {
    // 适用于读取小文件
	content, err := ioutil.ReadFile("example.txt")
	if err != nil {
		log.Fatal(err)
	}
	println(string(content))
}

2、使用 os.Openbufio 逐行读取或分块读取

Go 复制代码
file, err := os.Open("example.txt")
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()
	// 创建一个 Scanner 来读取文件内容
	scanner := bufio.NewScanner(file)
	// 创建一个变量来保存文件内容
	var content string
	for scanner.Scan() {
		//fmt.Println(scanner.Text())
		// 追加每一行内容到变量中
		content += scanner.Text() + "\n"
	}

	if err := scanner.Err(); err != nil {
		log.Fatal(err)
	}
	// 打印整个文件的内容
	fmt.Println(content)

3、使用 os.Openio.Reader 自定义读取逻辑

Go 复制代码
file, err := os.Open("example.txt")
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close() // 延迟关闭文件,确保在函数返回时关闭文件

	// 创建一个缓冲区以存储文件内容
	var contentBuffer bytes.Buffer

	// 定义一个分块大小的缓冲区
	buffer := make([]byte, 1024)

	// 循环读取文件内容直到文件结束
	for {
		// 从文件读取内容到缓冲区
		n, err := file.Read(buffer)
		if err != nil && err != io.EOF {
			log.Fatal(err)
		}
		if n == 0 {
			break
		}
		// 将读取的内容写入到缓冲区
		contentBuffer.Write(buffer[:n])
	}

	// 将缓冲区的内容转换为字符串
	content := contentBuffer.String()

	// 打印文件内容
	fmt.Println(content)
相关推荐
Je1lyfish10 分钟前
CMU15-445 (2025 Fall/2026 Spring) Project#3 - QueryExecution
linux·c语言·开发语言·数据结构·数据库·c++·算法
Brilliantwxx25 分钟前
【C++】 vector(代码实现+坑点讲解)
开发语言·c++·笔记·算法
野生技术架构师25 分钟前
2026年最全Java面试题及答案汇总(建议收藏,面试前看这篇就够了)
java·开发语言·面试
程序员飞哥25 分钟前
重构 AI 思维(一):Prompt Engineering,如何下达不可违抗的指令?
人工智能·后端
百锦再1 小时前
Auto.js变成基础知识学习
开发语言·javascript·学习·sqlite·kotlin·android studio·数据库开发
叼烟扛炮1 小时前
C++第三讲:类和对象(中)
开发语言·c++·类和对象
皮皮林5512 小时前
@Autowired 和 @Resource 注解有啥区别?你这项目怎么还混着用呢?
后端
iDao技术魔方2 小时前
DeepSeek TUI:原生 Rust 打造的终端 AI 编码 Agent
开发语言·人工智能·rust
jghhh012 小时前
认知无线电中基于能量检测的双门限频谱感知的 MATLAB 仿真
开发语言·matlab
程序员小假2 小时前
HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·后端