Go 读取文件

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

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.Open 和 bufio 逐行读取或分块读取

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.Open 和 io.Reader 自定义读取逻辑

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)

相关推荐

  1. Go 读取文件

    2024-05-10 18:50:02       33 阅读
  2. go语言】读取toml文件

    2024-05-10 18:50:02       60 阅读
  3. go读取terraform .tf文件内容

    2024-05-10 18:50:02       38 阅读
  4. Go读取文件n行的思路之旅

    2024-05-10 18:50:02       40 阅读
  5. Go 语言中的 Viper 库来读取 YAML 配置文件

    2024-05-10 18:50:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 18:50:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 18:50:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 18:50:02       87 阅读
  4. Python语言-面向对象

    2024-05-10 18:50:02       96 阅读

热门阅读

  1. 【QEMU系统分析之实例篇(二十五)】

    2024-05-10 18:50:02       25 阅读
  2. C++ 杂项

    2024-05-10 18:50:02       27 阅读
  3. React中间件的概念以及常用的实现

    2024-05-10 18:50:02       32 阅读
  4. linux 权限和权限的设置

    2024-05-10 18:50:02       28 阅读
  5. vue常见**MS题

    2024-05-10 18:50:02       29 阅读
  6. 实习记录——day01-day03

    2024-05-10 18:50:02       29 阅读
  7. Milvus基本概念及其应用场景

    2024-05-10 18:50:02       23 阅读
  8. PYTHON做题复盘

    2024-05-10 18:50:02       32 阅读
  9. 嵌入式交叉编译:Unable to find arm_neon.h

    2024-05-10 18:50:02       31 阅读
  10. 微信小程序下载文件详解

    2024-05-10 18:50:02       35 阅读