一架梯子,一头程序猿,仰望星空!
Golang初级特性面试题 > 内容正文

Go语言读写文件的方式有那些?


问题简答

Go语言有多种方式实现文件读写操作,包括 bufio 包、ioutil 包、os 包等。每种方法都有它们自己的特点,可以根据需要选择最适合的方式。例如,如果需要读取整个文件,可以使用 ioutil 包操作比较方便。如果需要从文件读取大量数据并执行频繁的读写操作,推荐bufio 包。

问题详解:

ioutil包读取文件例子

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    content, err := ioutil.ReadFile("./readme.txt")
    if err != nil {
        // 读取文件失败
        panic(err)
    }

    fmt.Println(string(content))
}

bufio读写文件例子

package main

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

func main() {
    // 创建一个文件
    file, err := os.Create("tizi365.txt")
    if err != nil {
        fmt.Println("创建文件失败:", err)
        return
    }
    defer file.Close()

    // 创建一个 bufio 写入器
    writer := bufio.NewWriter(file)

    // 向文件写入内容
    _, err = writer.WriteString("hello world\n")
    if err != nil {
        fmt.Println("写入文件失败:", err)
        return
    }

    // 将 bufio 写入器的缓存内容写入文件
    err = writer.Flush()
    if err != nil {
        fmt.Println("写入文件失败:", err)
        return
    }

    // 打开文件并创建一个 bufio 读取器
    file, err = os.Open("tizi365.txt")
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    defer file.Close()

    reader := bufio.NewReader(file)

    // 读取文件内容
    line, _, err := reader.ReadLine()
    if err != nil {
        fmt.Println("读取文件失败:", err)
        return
    }

    fmt.Println(string(line))
}