CodeFun Go

读取大文件

当读取大文件时,将整个文件全部加载的内存中是不明智的。

在 Golang 中读取大文件时,bufio 包很有用。

注意 bufio.Scanner 的最大缓冲区大小为 64*1024 字节,这意味着如果文件中有任何行大于 64*1024 的大小,那么它会给出错误。

假设我们有一个大文件 big.txt, 文件内容如下:

这是一个简单的代码示例
去展示如何一行一行
的读取
一个大文件。
package main

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

func main() {
	file, err := os.Open("./big.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
    if err := scanner.Err(); err != nil {
        log.Fatal(err)
    }
}
这是一个简单的代码示例
去展示如何一行一行
的读取
一个大文件。