Go基础_1_63 bufio

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

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

func main() {
    /*
        bufio:高效io读写
            buffer缓存
            io:input/output

        将io包下的Reader,Write对象进行包装,带缓存的包装,提高读写的效率

            ReadBytes()
            ReadString()
            ReadLine()
    */

    fileName := "D:\\Go\\web2\\aa.txt"
    file, err := os.Open(fileName)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer file.Close()

    // 创建Reader对象
    b1 := bufio.NewReader(file)

    // 1.Read(),高效读取
    // p := make([]byte, 1024)
    // n1, err := b1.Read(p)
    // fmt.Println(n1)
    // fmt.Println(string(p[:n1]))

    // 2.ReadLine()
    // data, flag, err := b1.ReadLine()
    // fmt.Println(flag)         // false
    // fmt.Println(err)          // <nil>
    // fmt.Println(data)         // [97 98 99 100 ...
    // fmt.Println(string(data)) // abcdefghijklmnopqrstuvwxyzabab

    // 3.ReadString()
    // s1, err := b1.ReadString('\n')
    // fmt.Println(err)
    // fmt.Println(s1) // aaa

    // s1, err = b1.ReadString('\n')
    // fmt.Println(err)
    // fmt.Println(s1) // bbb

    // s1, err = b1.ReadString('\n')
    // fmt.Println(err)
    // fmt.Println(s1) // ccc

    // for {
    //     s1, err := b1.ReadString('\n')
    //     if err == io.EOF {
    //         fmt.Println("读取完毕。。")
    //         break
    //     }
    //     fmt.Println(s1) // ddd
    // }

    //4.ReadBytes()
    data, err := b1.ReadBytes('\n')
    fmt.Println(err)
    fmt.Println(string(data)) // aaa

    // Scanner
    // s2 := ""
    // fmt.Scanln(&s2) // 此时需要用户输入
    // fmt.Println(s2)

    b2 := bufio.NewReader(os.Stdin) // 此时需要用户输入
    s2, _ := b2.ReadString('\n')    // 遇到换行停止接收用户输入
    fmt.Println(s2)

}