📚 开源资源分享——颜佐光的个人书架
✉️ 联系站长
书架 / go / 语法

Go 读取文件,块读取 Read(),行读取 ReadBytes('\n')

2020-11-20 22:21 · 约 1,206 字 · 浏览 2,810 次 · 更新 2020-11-20 22:22语法

Go 读取文件,块读取 Read(),行读取 ReadBytes('\n')

demo.go(读取文件,块读取 Read())

package main

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

func main() {
    // 打开文件
    fp, err := os.Open("./demo.txt")  // os.Open() 只读方式打开
    if err != nil {
        fmt.Println("打开文件失败。", err)
        return
    }
    defer fp.Close()

    buf := make([]byte, 1024)
    // 读取文件 (块读取)
    //count, _ := fp.Read(buf)  // count表示读取出来的有效字符(byte)数
    //fmt.Println(string(buf[:count]))
    for {
        // 循环读取文件
        n, err2 := fp.Read(buf)
        if err2 == io.EOF {  // io.EOF表示文件末尾
            fmt.Println("文件读取结束")
            break
        }
        fmt.Print(string(buf[:n]))
    }
}

demo.go(读取文件,行读取 ReadBytes('\n')):

package main

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

func main() {
    // 打开文件
    fp, err := os.OpenFile("./demo.txt", os.O_RDONLY, 6)
    if err != nil {
        fmt.Println("打开文件失败。", err)
        return
    }
    defer fp.Close()

    // 创建文件的缓存区
    r := bufio.NewReader(fp)
    for {
        // 读取文件 (行读取) ReadBytes('\n')
        slice, err2 := r.ReadBytes('\n')  // '\n'表示按行读取。 ','表示按英文逗号读取。
        fmt.Print(string(slice))  // 先打印,再判断err2 (如果文件末尾没有'\n',那么需要先打印再判断err2)
        if err2 == io.EOF {  // 如果读取到文件末尾
            break
        }
    }
}
← 返回《go》目录书架 →