【go语言】3.4.1 文件的读写

125 阅读1分钟

在 Go 语言中,读写文件主要涉及到 os 和 io 两个包。os 包用于打开、关闭、读取和写入文件,而 io 包提供了一些实用的读写函数。

读取文件

打开一个文件并读取其内容可以使用 os.Open 和 io.ReadAll 函数。

package main

import (
    "fmt"
    "io"
    "os"
)

func main() {
    file, err := os.Open("test.txt")
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer file.Close()

    content, err := io.ReadAll(file)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    fmt.Println(string(content))
}

在上述代码中,我们首先使用 os.Open 打开一个文件。然后,使用 io.ReadAll 读取文件的全部内容。最后,我们将读取到的内容转换为字符串并打印出来。

写入文件

写入文件可以使用 os.Create 和 os.File.Write 函数。

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Create("test.txt")
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer file.Close()

    _, err = file.Write([]byte("Hello, World!\n"))
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
}

在上述代码中,我们首先使用 os.Create 创建一个新文件。然后,使用 os.File.Write 方法写入字符串 "Hello, World!"。注意,os.File.Write 方法接受一个 []byte,所以我们需要首先将字符串转换为 []byte

行读取

如果你需要逐行读取文件,可以使用 bufio.Scanner

package main

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

func main() {
    file, err := os.Open("test.txt")
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    defer file.Close()

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

    if err := scanner.Err(); err != nil {
        fmt.Println("Error:", err)
    }
}

在上述代码中,我们创建了一个 bufio.Scanner,然后使用 Scanner.Scan 方法逐行读取文件。每次调用 Scanner.Scan 都会读取下一行,直到文件结束。

总的来说,Go 语言提供了灵活强大的文件读写功能,可以应对各种不同的需求。 推荐阅读:

mp.weixin.qq.com/s/dV2JzXfgj…

mp.weixin.qq.com/s/an83QZOWX…

file