Go基础_1_58 read

Tutorial: Go初级 Category: Go Published: 2026-04-07 13:58:26 Views: 21 Likes: 0 Comments: 0
package main

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

func main() {
    /*
        读取数据:
            Reader接口:
                Read(p []byte)(n int, error)
    */

    // step1:打开文件
    fileName := "D:\\Go\\web2\\aa.txt"
    file, err := os.Open(fileName)
    if err != nil {
        fmt.Println("err:", err)
        return
    }
    // step3:关闭文件
    defer file.Close()

    // step2:读取数据
    bs := make([]byte, 4)

    // //第一次读取
    // n, err := file.Read(bs)
    // fmt.Println(err)        // <nil>
    // fmt.Println(n)          // 4
    // fmt.Println(bs)         // [97 98 99 100]
    // fmt.Println(string(bs)) // abcd

    // //第二次读取
    // n, err = file.Read(bs)
    // fmt.Println(err)        // <nil>
    // fmt.Println(n)          // 4
    // fmt.Println(bs)         // [101 102 103 104]
    // fmt.Println(string(bs)) // efgh

    // //第三次读取
    // n, err = file.Read(bs)
    // fmt.Println(err)        //<nil>
    // fmt.Println(n)          //2
    // fmt.Println(bs)         //[105 106 103 104]
    // fmt.Println(string(bs)) //ijgh

    // //第四次读取
    // n, err = file.Read(bs)
    // fmt.Println(err) //EOF
    // fmt.Println(n)   //0

    n := -1
    for {
        n, err = file.Read(bs)
        if n == 0 || err == io.EOF {
            fmt.Println("读取到了文件的末尾,结束读取操作。。")
            break
        }
        fmt.Println(n, string(bs[:n]))
        // 4 abcd
        // 4 efgh
        // 4 ijkl
        // 4 mnop
        // 4 qrst
        // 4 uvwx
        // 2 yz
    }
}