📜  golang 逐行读取文件 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:31:02.188000             🧑  作者: Mango

Golang 逐行读取文件

在 Golang 中,我们可以使用 bufio 包来逐行读取文件。bufio 包实现了缓冲 I/O,可以在高效性和灵活性之间提供一个好的平衡点。

代码实现

下面是一个简单的 Golang 程序,它可以逐行读取一个文件并打印每一行的内容。

package main

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

func main() {
    file, err := os.Open("filename.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }

    if err := scanner.Err(); err != nil {
        panic(err)
    }
}

首先,我们使用 os.Open 函数打开一个文件。如果出现错误,程序将会触发 panic。接着,我们通过 defer 关键字延迟文件的关闭操作,使得程序在函数返回前一定会关闭文件。

然后,我们使用 bufio.NewScanner 函数创建一个新的扫描器,用于逐行读取文件。接着,我们进入一个 for 循环,每次循环时扫描器都会读取文件的一行内容,并将其存储在 scanner.Text() 中。最后,我们通过 fmt.Println 函数将每行内容打印出来。

最后,我们检查扫描器是否返回了任何错误。如果有错误,我们就会触发 panic。

结论

在 Golang 中,使用 bufio 包逐行读取文件非常简单,只需几行代码即可实现。如果你需要对大型文件进行操作,逐行读取文件是一种很好的方式,因为它不会在内存中保存整个文件,而是仅读取必要的部分。